我有一个MVC 5表单,我正在使用jQuery验证。我的问题是,基于特定的条件,我有一些文本框没有被写在窗体中。但是,DataAnnotation设置为Required,以便验证它们是否可见。无法停止验证不可见字段?
事情是,我的表单没有发布,因为所需的DataAnnotation不可见的字段。
我做了一些四处张望,发现一个建议,给我的表单一个ID和名称,然后只是下面的jQuery。我没有查看页面上的源代码,表单名称是正确的,但它仍然试图验证不可见的字段。
<script>
$(document).ready(function() {
$("#requestForm").validate({ ignore: ":not(:visible)" });
});
</script>
只是为了澄清,这些不是隐藏的领域。它们是不会在视图中写出的文本框。这是视图中的代码。在我的情况下,这不是一个部分,所以这些文本框只是没有写出到页面,但它导致模型无效,从而阻止它被发布。
if (Model.RequestType.ToLower() == "partial")
{
<div class="form-group row">
<div class="col-md-3">
<label class="control-label">From</label>
@Html.TextBoxFor(m => m.PartialFrom, new { @maxlength = "4", @class = "form-control" })
@Html.ValidationMessageFor(m => m.PartialFrom, null, new { @class = "text-danger" })
</div>
</div>
}
你也可以使用它像$( “#myForm会”)验证({。 忽略:“:hidden” }); –
这没有任何意义。如果你没有生成输入,那么客户端验证不能在不存在的东西上执行。它根本不可能(隐藏的输入不被默认验证,所以即使它们被隐藏,也不会阻止表单提交)。如果你的表单没有提交,那么它的其他内容就是这个问题。但是,如果你确实意味着它正在触发POST方法并且'ModelState'无效,那么这是一个不同的问题。 –
它正在打开POST,然后模型状态将它视为需要,即使输入框不可见。我最终通过使用https://github.com/jwaliszko/ExpressiveAnnotations来解决这个问题 – Caverman