5

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

2 回答 2

12

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

如果您想显示特定于字段/参数的消息,您应该使用ValidationMessageorValidationMessageFor代替:

@Html.ValidationMessage("LastName")
@Html.ValidationMessageFor(x=>x.LastName)
于 2013-08-16T08:34:52.637 回答
2

如果在某些情况下,您实际上并不希望每个字段都显示验证消息(即使用 Html.ValidationMessage),而是允许摘要作为验证错误消息的唯一来源(即使用 Html.ValidationMessage)。 ValidationSummary),您仍然需要某种方式来“触发”对您想要的特定字段进行验证。这可以通过在您的视图中使用 Html.Validate/Html.ValidateFor<> 方法来实现。这些助手不会呈现任何内容,而只会注册指定的字段以进行客户端验证。

请参阅此帖子以获取答案ASP.NET MVC 2 中的验证如何实际工作?

于 2013-08-16T08:35:50.050 回答