为什么我们在验证中使用Validate和Validatefor?我正在使用它,但我没有在UI中收到任何错误消息。
代码
<div>
@{Html.BeginForm();}
@Html.TextBoxFor(x => x.LastName, new { id = "txtLastName" })
@{Html.Validate("LastName");}
@{Html.ValidateFor(x=>x.LastName);}
<input type="submit" id="btnSubmit" value="Submit" />
@{Html.EndForm();}
</div>
答案 0 :(得分:10)
此行为是故意的。这两个助手都只是为客户端验证注册相应的参数,如果验证失败,则不会实际显示任何消息。但是,此消息仍可以ValidationSummary
显示。
如果您要显示特定于字段/参数的消息,则应使用ValidationMessage
或ValidationMessageFor
代替:
@Html.ValidationMessage("LastName")
@Html.ValidationMessageFor(x=>x.LastName)
答案 1 :(得分:1)
如果在某些情况下您实际上并不希望为每个字段显示验证消息(即使用Html.ValidationMessage),而是希望摘要成为验证错误消息的唯一来源(即使用Html.ValidationSummary),您仍然需要某种方法来“触发”对您希望的特定字段进行验证。这可以通过使用Html.Validate / Html.ValidateFor&lt;&gt;来实现。视图中的方法。这些帮助程序不会呈现任何内容,但只会注册指定的字段以进行客户端验证。
请参阅此帖子以获取答案How does validation in ASP.NET MVC 2 actually work?