使用复选框和单选按钮验证行为

时间:2012-08-01 20:51:48

标签: asp.net-mvc-3 unobtrusive-validation

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

<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>

以下是验证时的输出。

enter image description here

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

1 个答案:

答案 0 :(得分:1)

如果您考虑一下,复选框将通过验证是否勾选。它们(可能)将由模型中的bool属性支持,因此必须为true或false。勾选它们是真实的,未分开它们是假的 - 这对于布尔来说是完全有效的价值。在这种情况下唯一无效的值是null,这对于复选框是不可能的。

如果您的目标是验证用户是否勾选了该框,则需要MustBeTrue验证码 - 请参阅here以获取示例。

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