我在构建的ASP.NET MVC网站上有一个简单的表单。提交此表单,然后验证表单字段不为空,空或格式不正确。ASP.NET MVC中的表单提交属性验证错误
但是,当我使用ModelState.AddModelError()
指示来自我的控制器代码的验证错误时,我的视图重新呈现时,I 会出现错误。在Visual Studio中,我得到了下面的行被突出显示为错误的位置:
<%=Html.TextBox("Email")%>
的错误是:
NullReferenceException was unhandled by user code - object reference not set to an instance of an object.
我该文本框完整的代码如下:
<p>
<label for="Email">Your Email:</label>
<%=Html.TextBox("Email")%>
<%=Html.ValidationMessage("Email", "*") %>
</p>
以下是我正在做的是验证在我的控制器:
try
{
System.Net.Mail.MailAddress address = new System.Net.Mail.MailAddress(email);
}
catch
{
ModelState.AddModelError("Email", "Should not be empty or invalid");
}
return View();
注意:这适用于我所有的领域,不只是我的电子邮件字段,只要他们是无效的。
因此,对于第一个代码示例:你必须有两条线,对不对?换句话说,我首先调用AddModelError,然后调用SetModelValue?另外,什么是原始价值和企图价值?谢谢。 – 2010-05-08 22:15:25
是的,你需要两条线。 RawValue指向具有用于更新的属性的对象。 AttemptedValue存储用户实际输入的内容。我相信你可能会留下空白。 – 2010-05-08 22:19:11
您能举一个RawValue的例子,比如email属性吗?我有点困惑。 – 2010-05-08 22:41:58