使用ModelState验证表单

时间:2009-05-20 13:01:23

标签: asp.net-mvc

我正在尝试使用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

1 个答案:

答案 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"]);