显示MVC中复选框的模板

时间:2017-05-19 09:06:14

标签: asp.net-mvc frontend

我想在我的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 settrue,false`。

如何将其恢复为复选框?

顺便说一下,它必须是一个可以为空的bool,否则验证不起作用,因为默认情况下,复选框将取消选中,意味着false,这是一个值。

我希望能够看到一个复选框,如果未选中该复选框,验证将阻止此人继续在服务器端继续。

我还读过你可以通过添加另一个DisplayTemplate来做到这一点,但不确定这是否适用于我。是吗?

1 个答案:

答案 0 :(得分:1)

可以为空的bool有3个州(truefalsenull),但是检查nox只有2个状态(开/关转换为{{ 1}}和true)这就是生成dropownlist的原因。您不能使用可以为空的false复选框。

创建一个实现bool的自定义验证属性,以验证该值必须为IClientValidatable并将其应用于true属性(不可为空)。请参阅dazbradbury对MVC Model require true的回答。