我的模型类有一个没有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.CheckBox(“TestBool1”,Model.TestBool1)并将类型设置为bool ??
解决方法
从这个答案
Data annotations,why does boolean prop.IsRequired always equal true
DataAnnotationsModelValidatorProvider.AddImplicitrequiredAttributeForValueTypes = false;
Add this to your application_start. By default MVC adds [required] to non-nullable value types (because you can’t convert null into a bool,it must be a bool?)
你可以防止它发生,但因为你总是发送bool(真或假)我通常会离开它