EditorFor / CheckBoxFor boolean将data-val-required属性添加到HTML,而不将必需属性添加到模型中

时间:2013-03-14 10:54:12

标签: c# asp.net-mvc razor asp.net-mvc-4

我的模型类有一个没有Required属性的bool属性:

public class Test
{        
    public bool TestBool1 { get; set; }
}

然后在我的剃刀视图中我使用的是EditorFor(CheckBoxFor也是如此):

<div>
    @Html.LabelFor(m => m.TestBool1)
    @Html.EditorFor(m => m.TestBool1)
</div>

这导致以下HTML:

<div>
    <label for="TestBool1">TestBool1</label>
    <input class="check-box" data-val="true" data-val-required="The TestBool1 field is required." id="TestBool1" name="TestBool1" type="checkbox" value="true">
    <input name="TestBool1" type="hidden" value="false">
</div>

data-val-required html属性来自哪里?

有没有办法阻止它在不使用@Html.CheckBox("TestBool1", Model.TestBool1)并将类型设置为bool?的情况下执行此操作?

1 个答案:

答案 0 :(得分:13)

来自这个答案Data annotations, why does boolean prop.IsRequired always equal true

  

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

     

将此添加到您的application_start。默认情况下,MVC将[必需]添加到不可为空的值类型中(因为你不能将null转换为bool,它必须是bool?)

你可以防止它发生,但因为你总是发送bool(真或假)我通常会留下它