Comment obtenir la collection d'erreurs dans une vue?
Je ne souhaite pas utiliser le récapitulatif de validation Html Helper ou le message de validation. Au lieu de cela, je veux vérifier les erreurs et, le cas échéant, les afficher dans un format spécifique. Également sur les contrôles d'entrée, je souhaite rechercher une erreur de propriété spécifique et ajouter une classe à l'entrée.
PS J'utilise le moteur Spark View mais l'idée devrait être la même.
Alors j'ai pensé que je pourrais faire quelque chose comme ...
<if condition="${ModelState.Errors.Count > 0}">
DispalyErrorSummary()
</if>
....and also...
<input type="text" value="${Model.Name}"
class="?{ModelState.Errors["Name"] != string.empty} error" />
....
Ou quelque chose comme ça.
METTRE À JOUR
Ma solution finale ressemblait à ceci:
<input type="text" value="${ViewData.Model.Name}"
class="text error?{!ViewData.ModelState.IsValid &&
ViewData.ModelState["Name"].Errors.Count() > 0}"
id="Name" name="Name" />
Cela n'ajoute la classe d'erreur css que si cette propriété a une erreur.
html
asp.net-mvc
validation
spark-view-engine
Ryan Montgomery
la source
la source
Réponses:
ou
et pour une propriété spécifique ...
la source
Pour simplement obtenir les erreurs du ModelState, utilisez ce Linq:
la source
Version condensée de la réponse de @ ChrisMcKenzie :
la source
Cela vous donnera une chaîne avec toutes les erreurs séparées par des virgules
la source
Merci Chad! Pour afficher toutes les erreurs associées à la clé, voici ce que j'ai trouvé. Pour une raison quelconque, l'assistant Html.ValidationMessage de base n'affiche que la première erreur associée à la clé.
HtmlHelper:
la source
En rassemblant plusieurs réponses d'en haut, voici ce que j'ai fini par utiliser:
validationErrors
finit par être unList<string>
qui contient chaque message d'erreur. À partir de là, il est facile de faire ce que vous voulez avec cette liste.la source
Voici le VB.
la source
Si vous ne savez pas quelle propriété a causé l'erreur, vous pouvez, à l'aide de la réflexion, boucler sur toutes les propriétés:
Où T est le type de votre "ViewModel".
la source