2009-05-20 9 views
2

J'essaie de valider un formulaire en utilisant ModelState généralement de la même manière que dans les didacticiels sur asp.net/mvc. Cependant, je n'ai pas ma propre base de données ou leurs objets et je veux valider avec Formcollection. Je ne sais pas, comment fonctionne ModelState, alors peut-être que je suis prise de vue dans l'obscurité, mais est ici le code, que les accidents:Validation du formulaire avec ModelState

et NullReferenceException je reçois sur la zone de texte:

System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet. à System.Web.Mvc.HtmlHelper.GetModelStateValue (clé de chaîne, type destinationType) à System.Web.Mvc.Html.InputExtensions.InputHelper (HtmlHelper htmlHelper, InputType inputType, nom de chaîne, valeur d'objet, Boolean useViewData, Boolean isChecked, Boolean setId , Boolean isExplicitValue, IDictionary 2 htmlAttributes) at System.Web.Mvc.Html.InputExtensions.TextBox(HtmlHelper htmlHelper, String name, Object value, IDictionary 2 htmlAttributes) à System.Web.Mvc.Html.InputExtensions.TextBox (HtmlHelper htmlHelper, nom de chaîne, valeur d'objet) à ASP.views_authorized_account_aspx .__ RenderContent1 (HtmlTextWriter __w, Control parameterContainer) dans c: \ Users \ Trimack \ Documents \ Visual Studio 2008 \ Projets \ GuestManager \ AccountManager \ Views \ Authorized \ Account.aspx: ligne 61 *

Des idées? Ou ai-je complètement tort?

Trimack

Répondre

3

Ainsi, pour chaque erreur que vous ajoutez avec ModelState.AddModelError() et appeler la vue à nouveau, MVC Framework essayera de trouver un AttemptedValue pour toutes les erreurs qu'il trouve. Parce que vous ne les avez pas ajoutés, MVC lèvera une exception.

http://forums.asp.net/p/1396019/3006051.aspx

S'il y a des erreurs, vous devez également définir la valeur du modèle ainsi que l'erreur modale

 
ModelState.AddModelError("Some_Key","Show some error message"); 
ModelState.SetModelValue("Some_Key", ValueProvider["Some_Key"]); 
+0

ont également discuté ici ... http://stackoverflow.com/questions/647266/asp-net-mvc-html-textbox-throws-objet-référence-not-set-to-a-instance-of-an – David

+0

Vous voulez dire comme ça? If (formvals [1] .Length <5) ModelState.AddModelError (formvals.Keys [1], "Les commentaires doivent comporter au moins 5 symboles"); if (! ModelState.IsValid) return Voir(); C'est ce que j'ai. – Trimack

+0

J'ai compris. Merci. – Trimack

Questions connexes