Javascript MVC 5防止对隐藏字段进行必要的字段验证

Javascript MVC 5防止对隐藏字段进行必要的字段验证,javascript,jquery,asp.net-mvc,validation,Javascript,Jquery,Asp.net Mvc,Validation,我有一个MVC5 ViewModel,具有以下两个属性: public class RegisterViewModel { [Required] [EmailAddress] [Display(Name = "Email")] public string Email { get; set; } [Display(Name = "DOB")] public DateTime DateOfBirth { get;

我有一个MVC5 ViewModel,具有以下两个属性:

    public class RegisterViewModel
{
    [Required]
    [EmailAddress]
    [Display(Name = "Email")]
    public string Email { get; set; }       

    [Display(Name = "DOB")]        
    public DateTime DateOfBirth { get; set; }

    [Required]
    [Display(Name = "Business Name")]
    public string BusinessName { get; set; }
}
以及以下观点:

@使用(Html.BeginForm(“Register”、“Account”、FormMethod.Post、new{@id=“frmRegister”、@class=“form horizontal”、role=“form”}))
{
@Html.AntiForgeryToken()
创建一个新帐户。

@Html.ValidationSummary(“,new{@class=“text danger”}) @LabelFor(m=>m.Email,新的{@class=“col-md-2控制标签”}) @TextBoxFor(m=>m.Email,新的{@class=“form control”}) @LabelFor(m=>m.DateOfBirth,新的{@class=“col-md-2控制标签”}) @TextBoxFor(m=>m.DateOfBirth,new{@class=“form control”}) @LabelFor(m=>m.BusinessName,新的{@class=“col-md-2控制标签”}) @TextBoxFor(m=>m.BusinessName,新的{@class=“form control”}) }
请检查这个。


ModelState
对象不关心您在客户端做什么。它只是将绑定对象中的值与该对象上的验证属性进行比较。如果这些字段作为空字符串发回,或者根本没有发回,并且它们具有
[Required]
属性,那么它们将无效


如果这些字段不是必需的,只需从中删除
[required]
属性即可。如果它们通常是必需的,但在本例中不是,请创建一个不包含它们的视图模型,或者不将
[required]
属性应用于它们,并在此视图中使用该视图模型。

请看一看,删除客户端不引人注目的验证属性不会基于属性属性停止服务器端验证。1)不在您使用的模型中包含这些字段,2)删除对不需要的属性的验证,或3)将不需要的字段作为隐藏字段注入(例如,使用
@Html.HiddenFor()
    <div class="form-group">
        @Html.LabelFor(m=> m.DateOfBirth, new { @class = "col-md-2 control-label" })
        <div  class="col-md-10">
            @Html.TextBoxFor(m=> m.DateOfBirth, new { @class = "form-control ignore" })
        </div>
    </div>

    <!--Business Ext Registration fields-->
    <div id="Business_Ext">
        <div class="form-group">
            @Html.LabelFor(m => m.BusinessName, new { @class = "col-md-2 control-label" })
            <div class="col-md-10">
                @Html.TextBoxFor(m => m.BusinessName, new { @class = "form-control ignore" })
            </div>
        </div>
    </div>
</div>
$("#frmRegister").data("validator").settings.ignore = ".ignore, :hidden";