EditorFor / CheckBoxFor布尔添加数据-VAL要求的属性为HTML而不需要属性被

2019-08-17 14:22发布

我的模型类有没有必需的属性的布尔属性:

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

然后在我的Razor视图我使用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>

哪里数据-VAL-需要HTML属性是从哪里来的?

有没有办法来阻止它这样做,而无需使用@Html.CheckBox("TestBool1", Model.TestBool1)和设置到类型bool?

Answer 1:

从这个回答的数据标注,为什么布尔prop.IsRequired总是等于真

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = FALSE;

添加到您的Application_Start。 默认情况下,MVC增加[必需]对非空值类型(因为你不能转换成空一个布尔值,它必须是一个布尔?)

你可以阻止它的发生,但你总是会发送布尔(true或false)我通常把它



文章来源: EditorFor/CheckBoxFor boolean adds data-val-required attribute to HTML without required attribute being added to model