我有一个MVC 5表单,我正在使用jQuery验证。我的问题是,基于特定条件,我有一些文本框没有写在表单中。但是,DataAnnotation设置为Required,以便验证它们是否可见。
因为在不可见的字段上有必需的DataAnnotation,所以我的表单没有发布。
我做了一些环顾四周,并找到了一个建议,给我的表单一个ID和名称,然后只是下面的jQuery。我确实查看了页面上的来源,表单名称是正确的,但它仍在尝试验证不可见的字段。
<script>
$(document).ready(function () {
$("#requestForm").validate({ ignore: ":not(:visible)" });
});
</script>
只是为了澄清,这些不是隐藏的领域。它们是未在视图中写出的文本框。这是View中的代码。在我的场景中,这不是一个部分,所以这些文本框只是没有写到页面,但它导致模型无效,从而阻止它被发布。
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>
}
答案 0 :(得分:0)
您可以在vaidation插件代码之前使用以下代码:
// all agents in set
List<object> ops = m.GroupBy(x => x.Agent).ToList()
.ConvertAll(c => (object)new { Agent = c.First().Agent});
list = m
.GroupBy(x => string.Format(@"""DateText"": {0}", x.DateText ))
.ToDictionary(x => x.Key, x => x.ToList()
.ConvertdictionaryAll(c => (object)new { Datetext = c.DateText, Agent
c.Agent, Talk = c.Talk })));
list.Add("keys", ops);