0

ASP.NET MVC 3 应用程序。

我正在尝试发布具有一些使用 JavaScript 出现和消失的动态字段的表单。我正在使用 IValidatableObject 对其中一些动态字段进行服务器端验证。

当这些字段可见并且我发布表单时,验证工作正常,它会在 ValidationSummary 中提供适当的错误消息并回发。现在,虽然这些错误消息在那里,但我使用隐藏这些字段

document.getElementById("schoolNotListed").style.display = "none";

我尝试再次发布表单,每次都会弹出 ValidationSummary 错误。控件没有到达控制器,也没有到达视图模型中的 Validate() 函数。这是一些客户端验证,阻止表单发布。

有没有办法可以跳过或禁用这些现在通过 javaScript 隐藏的字段的验证。或者我可以通过 javaScript 清除 ModelState 吗?

如果您对如何以不同的方式处理它有一些建议?

谢谢

4

1 回答 1

0

客户端 Javascript 验证库构建了一个规则对象来进行验证

当您隐藏它们时,请尝试删除验证器

$('#schoolNotListed').hide().rules('remove', 'required')
$.validate.unobtrusive.parse()

第二行告诉验证器重建规则对象。

这个问题可能有用:Disable required validation by JavaScript

于 2012-07-26T02:50:38.833 回答