我正在尝试使用ModelState验证表单,通常与asp.net/mvc上的教程相同。但是,我没有自己的数据库或他们的对象,并希望验证Formcollection。我不确定,ModelState是如何工作的,所以也许我在黑暗中拍摄,但这里是代码,崩溃了:
和NullReferenceException我得到了TextBox:
System.NullReferenceException:未将对象引用设置为对象的实例。在System.Web.Mvc.HtmlHelper.GetModelStateValue(String key,Type destinationType)at System.Web.Mvc.Html.InputExtensions.InputHelper(HtmlHelper htmlHelper,InputType inputType,String name,Object value,Boolean useViewData,Boolean isChecked,Boolean setId ,布局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,String name,Object value)at ASP.views_authorized_account_aspx .__ RenderContent1(HtmlTextWriter __w,Control parameterContainer)in c :\ Users \ Trimack \ Documents \ Visual Studio 2008 \ Projects \ GuestManager \ AccountManager \ Views \ Authorized \ Account.aspx:第61行*
有什么想法吗?或者我完全错了?
Trimack
答案 0 :(得分:3)
因此,对于您使用ModelState.AddModelError()添加的每个错误并再次调用View,MVC Framework将尝试为找到的每个错误找到一个AttemptedValue。因为你没有添加它们,MVC会抛出异常。
http://forums.asp.net/p/1396019/3006051.aspx
如果有错误,那么您还必须设置模型值以及模态错误
ModelState.AddModelError("Some_Key","Show some error message"); ModelState.SetModelValue("Some_Key", ValueProvider["Some_Key"]);