Validation 如果字段在ASP.NET MVC 5中隐藏,则忽略必填字段

Validation 如果字段在ASP.NET MVC 5中隐藏,则忽略必填字段,validation,asp.net-mvc-5,model-validation,Validation,Asp.net Mvc 5,Model Validation,我正在使用ASP.NETMVC5,我有一个模型。我的模型中需要一个属性。但是,在前端的窗体中,元素最初不可见。我希望验证仅在字段可见时进行。当前,即使字段不可见,也会进行验证。我的字段在前端看起来像这样: <div style="display:none;"> @Html.TextBoxFor(Model => Model.name, "", new { @class = "adrInput form-control" }) @Html.ValidationMe

我正在使用ASP.NETMVC5,我有一个模型。我的模型中需要一个属性。但是,在前端的窗体中,元素最初不可见。我希望验证仅在字段可见时进行。当前,即使字段不可见,也会进行验证。我的字段在前端看起来像这样:

<div style="display:none;">
    @Html.TextBoxFor(Model => Model.name, "", new { @class = "adrInput form-control" })
    @Html.ValidationMessageFor(Model => Model.name, "", new { @class = "valErrorMsg" })
</div>

如何确保验证仅在元素可见时进行?当前,始终执行验证。不管字段是否可见。

我解决了这个问题。您必须在控制器中检查元素是否可见。我能够在我的应用程序中很容易地检查这个问题,因为在我的表单中取消选中某个复选框时会显示文本框。然后,我可以从模型中读取此复选框的值。通过这种方式,您可以删除验证:

this.ModelState.Remove("name");
this.ModelState.Remove("name");