2012-08-01 109 views
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> 

以下是驗證時的輸出。

enter image description here

我申請的一切與單選按鈕,並在此顯示的複選框以同樣的方式。但是爲什麼我沒有在複選框中得到驗證錯誤,而我在單選按鈕中獲得了我的預期。

回答

1

如果您仔細考慮它,複選框將通過驗證,無論它們是否打勾。他們(大概)會在你的模型中支持bool屬性,所以必須是真或假。勾選他們是真實的,不挑剔他們是假的 - 這是一個完美的有價值的布爾。在這種情況下,唯一無效的值將是null,這對複選框不可行。

如果您的目標是驗證用戶已勾選該框,您將需要一個MustBeTrue驗證程序 - 有關示例,請參見here

如果true和false都是有效值,並且您希望強制用戶選擇其中一個或另一個,請使用帶有「是」,「否」和「請指定」的下拉列表作爲選項。

+0

不錯。讓我嘗試一下。 – SaravananArumugam 2012-08-02 20:10:36