在一个页面中对多个表单进行asp.net mvc客户端验证

在一个页面中对多个表单进行asp.net mvc客户端验证,asp.net,asp.net-mvc,validation,Asp.net,Asp.net Mvc,Validation,我的asp.net mvc视图中有4个表单。我已经通过在每个表单的Html.BeginForm()上方放置对每个表单启用了客户端验证。问题是,不管我为表单指定了ID,只要我单击其他表单的提交,页面上的第一个表单就会得到验证 是否支持此用法,或者我做错了什么?请确保您有属性的验证消息。除非有验证消息或(ValidateFor()),否则属性不会添加到表单提交时验证的元素集中 有关更多信息,请参阅此部分。这可能会有所帮助 <%=Html.ValidationMe

我的asp.net mvc视图中有4个表单。我已经通过在每个表单的
Html.BeginForm()
上方放置
对每个表单启用了客户端验证。问题是,不管我为表单指定了ID,只要我单击其他表单的提交,页面上的第一个表单就会得到验证


是否支持此用法,或者我做错了什么?

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

有关更多信息,请参阅此部分。

这可能会有所帮助

                <%=Html.ValidationMessageFor(m => ((RegistrationFormModel)m.Data).Email, null, new { id = "registration_Email" })%>
((RegistrationFormModel)m.Data).Email,空,新的{id=“registration\u Email”})%>

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

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

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


这不是一个很好的例子,但可能发生的情况是,由于您的属性具有相同的名称,验证正在触发交叉表单。

我正在使用Html.ValidationMessageForClient-Side验证对一个表单有效,但每当我在其他表单上单击submit时添加更多表单,页面上的第一个表单将被验证。Hmmm。看起来它只生成一组验证元数据。您可能需要使用一些备用的客户端验证。也就是说,您只需为所生成验证的字段insead指定一个自定义id。很好。谢谢,当我在一个部分中使用相同的表单来添加新数据和编辑现有数据时,这让我摆脱了束缚。只是添加了一个简单的检查,看看主键是否为0(即,新数据),并为这些添加了一个自定义id。