如果字段隐藏在 ASP.NET MVC 5 中,则忽略必填字段
Ignore required field if field is hidden in ASP.NET MVC 5
我正在使用 ASP.NET MVC 5,我有一个模型。我的模型中的一个属性是必需的。然而,在前端的表单中,元素一开始是不可见的。我希望只有在该字段可见时才进行验证。目前,即使该字段不可见,也会进行验证。我的字段在前端看起来像这样:
<div style="display:none;">
@Html.TextBoxFor(Model => Model.name, "", new { @class = "adrInput form-control" })
@Html.ValidationMessageFor(Model => Model.name, "", new { @class = "valErrorMsg" })
</div>
在模型中,我的字段如下所示:
[Required(ErrorMessage = "Please insert name.")]
public string name{ get; set; }
如何确保仅在元素可见时才进行验证?当前始终执行验证。不管该字段是否可见。
我解决了这个问题。如果元素可见,则必须签入控制器。我能够在我的应用程序中非常轻松地检查这一点,因为在我的表单中取消选中某个复选框时会显示文本框。然后我可以从模型中读取这个复选框的值。这样就可以去掉验证:
this.ModelState.Remove("name");
我正在使用 ASP.NET MVC 5,我有一个模型。我的模型中的一个属性是必需的。然而,在前端的表单中,元素一开始是不可见的。我希望只有在该字段可见时才进行验证。目前,即使该字段不可见,也会进行验证。我的字段在前端看起来像这样:
<div style="display:none;">
@Html.TextBoxFor(Model => Model.name, "", new { @class = "adrInput form-control" })
@Html.ValidationMessageFor(Model => Model.name, "", new { @class = "valErrorMsg" })
</div>
在模型中,我的字段如下所示:
[Required(ErrorMessage = "Please insert name.")]
public string name{ get; set; }
如何确保仅在元素可见时才进行验证?当前始终执行验证。不管该字段是否可见。
我解决了这个问题。如果元素可见,则必须签入控制器。我能够在我的应用程序中非常轻松地检查这一点,因为在我的表单中取消选中某个复选框时会显示文本框。然后我可以从模型中读取这个复选框的值。这样就可以去掉验证:
this.ModelState.Remove("name");