MVC3删除了"required"但仍然获得了data-val-required属性

Amo*_*mol 5 asp.net asp.net-mvc-3

我的模特

    [DataType(DataType.Text)]
    [Display(Name = "Number of Employee")]
    public int NumberOfEmployee { get; set; }

    [DataType(DataType.Date)]
    [Display(Name = "CEO Birthday")]
    [DateRange(2)]
    public DateTime CEO_Birthday { get; set; }

    [DataType(DataType.Date)]
    [Display(Name = "Organisation Anniversary")]
    [DateRange(3)]
    public DateTime OrgAnniversary { get; set; }
Run Code Online (Sandbox Code Playgroud)

我的观点

          <tr>
            <td style="border:0;">
                <div class="editor-label">
                    @Html.LabelFor(m => m.NumberOfEmployee)                            
                </div> 
            </td>
            <td style="border:0;">
                <div class="editor-field">
                    @Html.TextBoxFor(m => m.NumberOfEmployee)
                </div>
            </td>
        </tr>

        <tr>
            <td style="border:0;vertical-align:middle;">
                <div class="editor-label">
                    @Html.LabelFor(m => m.CEO_Birthday)                            
                </div> 
            </td>
            <td style="border:0;">
                <div class="editor-field">
                    @Html.TextBoxFor(m => m.CEO_Birthday, new { @class="date"})
                </div>
            </td>
        </tr>

        <tr>
            <td style="border:0;vertical-align:middle;">
                <div class="editor-label">
                    @Html.LabelFor(m => m.OrgAnniversary)                            
                </div> 
            </td>
            <td style="border:0;">
                <div class="editor-field">
                    @Html.TextBoxFor(m => m.OrgAnniversary, new { @class = "date" })
                </div>
            </td>
          </tr>
Run Code Online (Sandbox Code Playgroud)

我的Global.asax.cs

protected void Application_Start()
    {
        DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
       .....
    }
Run Code Online (Sandbox Code Playgroud)

在我的模型中没有必需的属性,但我仍然得到这个

在此输入图像描述

我引用This来删除必填字段,但它不适用于我的代码.帮我删除必填字段.

Amo*_*mol 16

我通过设置可空的Model的属性来得到我的答案,即.

    [DataType(DataType.Text)]
    [Display(Name = "Number of Employee")]
    public int? NumberOfEmployee { get; set; }

    [DataType(DataType.Date)]
    [Display(Name = "CEO Birthday")]
    [DateRange(2)]
    public DateTime? CEO_Birthday { get; set; }

    [DataType(DataType.Date)]
    [Display(Name = "Organisation Anniversary")]
    [DateRange(3)]
    public DateTime? OrgAnniversary { get; set; }
Run Code Online (Sandbox Code Playgroud)

不需要添加这个

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
Run Code Online (Sandbox Code Playgroud)