asp.net mvc客户端验证在一个页面中的多个窗体

时间:2010-03-20 16:52:16

标签: asp.net asp.net-mvc validation

我的asp.net mvc视图中有4个表单。我已通过将<% Html.EnableClientValidation(); %>放在每个表单的Html.BeginForm()之上来启用每个客户端验证。问题在于,无论我是否为表单指定了ID,每当我单击提交其他表单时,页面上的第一个表单都会得到验证。

这种用法是否得到支持,或者我做错了什么?

3 个答案:

答案 0 :(得分:1)

这可能会有所帮助

                <%=Html.ValidationMessageFor(m => ((RegistrationFormModel)m.Data).Email, null, new { id = "registration_Email" })%>

答案 1 :(得分:0)

确保您拥有属性的验证消息。除非您有验证消息或(ValidateFor()),否则该属性不会添加到表单提交时验证的元素集。

有关详细信息,请参阅此question

答案 2 :(得分:0)

MVC2完全支持您正在寻找的设置,我的猜测是您将此应用于在同一页面上显示注册表单和登录表单的内容?

如果是这样,您只需要每个表单都有独立的属性名称,即

LoginModel将具有Username属性,而RegistrationModel将具有RegistrationUsername。

那里不是一个很好的例子,但可能发生的事情是验证是触发交叉形式,因为你的属性具有相同的名称。