如果不显眼的验证无效则显示div,如果在MVC 3中有效则隐藏它

Sae*_*eid 4 asp.net-mvc jquery unobtrusive-javascript unobtrusive-validation asp.net-mvc-3

这是我的编辑视图的一部分:

<dt>
@Html.LabelFor(model => model.MainModel.StartDate)
</dt>
<dd>
@Html.TextBoxFor(model => model.MainModel.StartDate)
@Html.ValidationMessageFor(model => model.MainModel.StartDate)
    <div class="targetDiv"> My content </div>
</dd>
Run Code Online (Sandbox Code Playgroud)

因此,当你们所有人都知道StartDate我的模型中的字段无效时不显眼时会显示错误消息,如果有效则隐藏它.现在我想为此过程添加另一个操作.我需要如果StartDate值是无效的显示"targetDiv" div,如果StartDate值是有效隐藏它.你的建议是什么?

arc*_*hil 8

您可以使用ModelState.IsValidField方法检查字段有效性

<div class="targetDiv" @if (Html.ViewData.ModelState.IsValidField("StartDate"))
{
     <text>style="display:none"</text>         
}>
     My content 
</div>
Run Code Online (Sandbox Code Playgroud)


mat*_*mmo 4

您必须首先验证您的表单(假设它的 id 为 myForm,并且以下代码包含在保存按钮单击函数中):

$("#myForm").validate();

if ($("#myForm").valid()) {
  $("#targetDiv").css("display", "none");
}
else {
    if ($("[id='MainModel.StartDate']").hasClass("input-validation-error") {
        //note the strange ID selector above, that's because it's got a . in :)
        $("#targetDiv").css("display", "block");
    }
    else {
        $("#targetDiv").css("display", "none");
    }
}
Run Code Online (Sandbox Code Playgroud)