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
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?
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.
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
Vous devez vous connecter pour publier un commentaire.
Le code que vous avez fournie devrait fonctionner correctement si les conditions suivantes sont remplies.
1) Vous avez de référence pour les scripts jQuery validation de votre point de vue
2) Sur le formulaire de soumission, vous appelez le ModelState.IsValid de propriété et donc de la validation du modèle a passé à la méthode d'action
Mais dans votre question vous a montré ResponseProductInsert. Pas ProductInserVM !
Oui, désolé.. j'ai juste changé le nom pour mieux comprendre;
OriginalL'auteur