EditorFor/CheckBoxFor boolean将data- value -required属性添加到HTML

本文关键字:属性 -required 添加 HTML value data- CheckBoxFor boolean EditorFor | 更新日期: 2023-09-27 18:03:57

我的模型类有一个没有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>

数据值所需的html属性来自哪里?

在不使用@Html.CheckBox("TestBool1", Model.TestBool1)并将类型设置为bool?的情况下,是否有办法阻止它这样做?

EditorFor/CheckBoxFor boolean将data- value -required属性添加到HTML

从这个答案数据注解,为什么布尔prop。IsRequired总是等于true

DataAnnotationsModelValidatorProvider。addimplicitrequiredatattributeforvaluetypes = false;

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

可以防止这种情况发生,但由于您总是会发送bool (true或false),我通常将其保留为