Html Validate和Html ValidateFor之间的区别

时间:2013-08-16 08:28:52

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

为什么我们在验证中使用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>

2 个答案:

答案 0 :(得分:10)

此行为是故意的。这两个助手都只是为客户端验证注册相应的参数,如果验证失败,则不会实际显示任何消息。但是,此消息仍可以ValidationSummary显示。

如果您要显示特定于字段/参数的消息,则应使用ValidationMessageValidationMessageFor代替:

@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?