我想在我的MVC项目中找一个复选框申请表格,你必须在最后选中方框表示你同意这些条款和条件。我正在使用
<div class="form">
<div class="validation-container">@Html.ValidationMessageFor(m => m.HasAcceptedTerms)
</div>
<div class="label-container">@Html.LabelFor(m => m.HasAcceptedTerms)</div>
<div class="form-control">@Html.EditorFor(m => m.HasAcceptedTerms)</div>
</div>
然后我使用了属性
[Required(ErrorMessage = "You must indicate you have read the statements above before continuing")]
[Display (Name = "Please tick to show you accept all the above statements")]
public bool? HasAcceptedTerms
{
get; set;
}
但是,现在这给我一个包含三个值的下拉列表:not set
,true
,false`。
如何将其恢复为复选框?
顺便说一下,它必须是一个可以为空的bool,否则验证不起作用,因为默认情况下,复选框将取消选中,意味着false,这是一个值。
我希望能够看到一个复选框,如果未选中该复选框,验证将阻止此人继续在服务器端继续。
我还读过你可以通过添加另一个DisplayTemplate来做到这一点,但不确定这是否适用于我。是吗?
答案 0 :(得分:1)
可以为空的bool
有3个州(true
,false
和null
),但是检查nox只有2个状态(开/关转换为{{ 1}}和true
)这就是生成dropownlist的原因。您不能使用可以为空的false
复选框。
创建一个实现bool
的自定义验证属性,以验证该值必须为IClientValidatable
并将其应用于true
属性(不可为空)。请参阅dazbradbury对MVC Model require true的回答。