ValidationMessageFor ne présentant pas d'erreurs

J'ai cette classe:

public class Product
{
    [Required(ErrorMessage = "empty name")]
    public string Name { get; set; }

    [Required(ErrorMessage = "empty description")]
    public string Description { get; set; }
}

et j'ai un ResponseProduct qui est montré dans la vue:

public class ProductInsertVM
{
    public string Message = "Success";
    public Product Product;
}

De mon point de vue, j'ai ceci:

@using (Html.BeginForm()){  
    @Html.ValidationSummary(false)

    @Html.TextBoxFor(m => m.Product.Description)
    @Html.ValidationMessageFor(m => m.Product.Description)
}

Ce que je veux savoir, c'est pourquoi ValidationMessageFor fais'n travail? !! seulement ValidationSummary œuvres. Si je répondre avec un Produit, de sorte qu'il fonctionne.

Essayez de mettre Required attributs dans un Modèle de Vue directement. Créer une nouvelle classe qui est la même que Product et l'utiliser comme Modèle dans la vue. C'est une bonne pratique d'utiliser un simple Modèle d'Affichage pour chaque Vue qui contient les champs à partir de la forme ou les champs à afficher.
Voulez-vous dire une classe avec les mêmes propriétés et les mêmes annotations de données? n'est-ce pas mal?
ProductInsertViewModel par exemple, doit contenir tous les champs que vous aurez besoin de: Name, Description, et c'est tout. Vous pouvez réellement utiliser Product. Il suffit de ne pas utiliser ResponseProductInsert. Pour le Message de la valeur, de la bonne façon serait d'utiliser les ressources. Créer un Resources_local dossier spécial, réglez-le pour générer du code, et l'utilisation de la chaîne de valeurs de la part des ressources dans votre code directement. Avec les ressources qui vous permettra de localiser plus facilement en cas de besoin.
Je n'étais pas sûr que ce serait une solution, mais je n'ai décrire une bonne pratique :). Si Shyju la réponse de l'aide, de traiter ce que j'ai écrit comme un des conseils pour l'avenir.

OriginalL'auteur MuriloKunze | 2012-05-21

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *