8

我的模型类有一个没有必需属性的 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?

4

1 回答 1

14

从这个答案数据注释中,为什么 boolean prop.IsRequired 总是等于 true

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

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

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

于 2013-03-14T10:58:44.003 回答