1

我启用了不显眼的验证。我的页面源看起来像这样。

<p>
    <label>
        Project Title
        <br />
        <input class="project-title" data-val="true" data-val-required="The Project Title field is required."
            id="RequestDetail_ProjectTitle" name="RequestDetail.ProjectTitle" type="text"
            value="" />
    </label>
    <span class="field-validation-valid" data-valmsg-for="RequestDetail.ProjectTitle"
        data-valmsg-replace="true"></span> </p> <p>
    <span>Submitted By</span><br />
    <span class="inline-container">
        <input type="hidden" id="RequestDetail_SubmittedBy" name="RequestDetail.SubmittedBy"
            value="0" data-type="RequestDetail.SubmittedBy" /><label><input type="radio" data-type="RequestDetail.SubmittedBy"
                name="_RequestDetail.SubmittedBy" value="1" data-val="true" data-val-required="The Submitted By field is required." />ND</label>
        |
        <label>
            <input type="radio" data-type="RequestDetail.SubmittedBy" name="_RequestDetail.SubmittedBy"
                value="2" data-val="true" data-val-required="The Submitted By field is required." />NE</label>
        |
        <label>
            <input type="radio" data-type="RequestDetail.SubmittedBy" name="_RequestDetail.SubmittedBy"
                value="4" data-val="true" data-val-required="The Submitted By field is required." />WY</label>
        |
        <label>
            <input type="radio" data-type="RequestDetail.SubmittedBy" name="_RequestDetail.SubmittedBy"
                value="8" data-val="true" data-val-required="The Submitted By field is required." />CL</label>
    </span><span class="field-validation-valid" data-valmsg-for="_RequestDetail.SubmittedBy"
        data-valmsg-replace="true"></span> </p> <p>
    <span>Affected Plans</span><br />
    <span class="inline-container">
        <input type="hidden" id="RequestDetail_AffectedPlans" name="RequestDetail.AffectedPlans"
            value="0" data-type="RequestDetail.AffectedPlans" /><label><input type="checkbox"
                data-type="RequestDetail.AffectedPlans" name="_RequestDetail.AffectedPlans" value="1"
                data-val="true" data-val-required="The Affected Plans field is required." />ND</label>
        |
        <label>
            <input type="checkbox" data-type="RequestDetail.AffectedPlans" name="_RequestDetail.AffectedPlans"
                value="2" data-val="true" data-val-required="The Affected Plans field is required." />NE</label>
        |
        <label>
            <input type="checkbox" data-type="RequestDetail.AffectedPlans" name="_RequestDetail.AffectedPlans"
                value="4" data-val="true" data-val-required="The Affected Plans field is required." />WY</label>
    </span><span class="field-validation-valid" data-valmsg-for="_RequestDetail.AffectedPlans"
        data-valmsg-replace="true"></span> </p>

这是验证后的输出。

在此处输入图像描述

我使用单选按钮和此处显示的复选框以相同的方式应用了所有内容。但是为什么我在复选框中没有收到验证错误,而在单选按钮中却得到了我所期望的。

4

1 回答 1

1

如果您考虑一下,复选框将通过验证,无论它们是否被勾选。它们将(可能)由bool模型中的属性支持,因此必须为真或假。勾选它们是真的,不勾选它们是假的——这是一个完全有效的布尔值。在这种情况下,唯一无效的值null是复选框无法使用的值。

如果您的目标是验证用户是否勾选了该框,您将需要一个MustBeTrue验证器 - 请参阅此处的示例。

如果 true 和 false 都是有效值,并且您希望强制用户选择其中一个,请使用带有“是”、“否”和“请指定”作为选项的下拉菜单。

于 2012-08-01T21:46:12.090 回答