簡體   English   中英

ASP.NET 如何驗證是否選中了復選框列表中的框(1 個且僅 1 個)

[英]ASP.NET How to validate if a box within a checkboxlist is selected (1 and only 1)

我正在嘗試為我的任務獲得一些驗證功能的幫助。 我完全被它困住了。 我們必須創建一個包含多個字段的 Web 表單。 我已經設置了其他所有內容(用戶名長度超過 6 個字符;密碼用星號隱藏,長度超過 8 個字符,並包含 1 個大寫字母和 1 個小寫字母、1 個數字和 1 個特殊字符等)。

說明是每個字段都需要輸入一些內容。 我們應該創建各種字段,但其中一條指令是創建一個包含 5 個框的復選框列表。 說明沒有指定只選擇一次答案,但是,這就是我想要的。

復選框列表用於年齡人口統計......供用戶選擇他們落入的年齡范圍。 這就是我所擁有的:

ASPX 文件:

<tr class="Specific">
    <td>
       <asp:Label
          ID="AgeLabel"
          style="vertical-align:middle"
          runat="server"
          Text="Age Demographic:"
          Font-Bold="True"
          ForeColor="#016882">
       </asp:Label>
    </td>
    <td>
       <asp:CheckBoxList ID="Age" runat="server" Width="385px">
       </asp:CheckBoxList>
    </td>
</tr>

ASPX.CS 文件:

protected void Page_Load(object sender, EventArgs e)
{ 
   if (!Page.IsPostBack)
   {
      Age.Items.Add("&nbsp;18-24");
      Age.Items.Add("&nbsp;25-34");
      Age.Items.Add("&nbsp;35-44");
      Age.Items.Add("&nbsp;45-54");
      Age.Items.Add("&nbsp;55+");
      MyFormPanel.Visible = true; // show the form
   } // End If
} // End Page_Load

這只是為我填充復選框。 我無法讓任何驗證器與這個一起工作。 所以我所做的是創建一個在單擊提交按鈕時運行的函數。 此函數檢查是否只單擊了 1 個框。

protected void cmdSubmit_Click(object sender, EventArgs e)
{
   int test = 0;
   result.Text = "";

   foreach (ListItem lstItem in Age.Items)
   {
      if (lstItem.Selected == true)
      {
         test += 1;
      }
   }
   if (test == 0)
   {
      result.Text = "Please select one of the boxes in Age Demographic.";
   }
   else if (test != 1)
   {
      result.Text = "Please select only 1 checkbox in Age Demographic.";
   }
   else
   {
      return;
   }
}

我的問題是……我怎樣才能將此功能與頁面驗證聯系起來? 我的思考過程是有一個叫做 Page.IsValid 的東西是一個布爾值,對嗎? 我的想法是我可以在這個函數中放一些東西,將 IsValid 分配給 false,如果這個驗證通過,那么它會將 IsValid 分配給 true。 我在這里思考的方向是否正確?

我在我的代碼中嘗試過這個,但它告訴我這個屬性是只讀的。 我已經設置了很多不同的 RequiredFieldValidators 和 RegularExpressionValidators 以確保文本框不為空並且電子郵件地址和電話號碼的格式正確,所以我不確定這個函數如何與這些一起使用。 任何幫助將不勝感激。 謝謝你。

更新:現在我被告知用戶可以選擇多個復選框,因此復選框列表更合適。 但是我們如何驗證數據並將信息包含在驗證摘要中?

是否要檢查是否在清單框中選擇了至少一項?

如果是這樣,也許您可​​以嘗試編寫腳本來實現它。 這是一個簡單的演示。

腳本

<script type="text/javascript">
function ValidateCheckBoxList(sender, args) {
    var checkBoxList = document.getElementById("<%=CheckBoxList1.ClientID %>");
    var checkboxes = checkBoxList.getElementsByTagName("input");
    var isValid = false;
    for (var i = 0; i < checkboxes.length; i++) {
        if (checkboxes[i].checked) {
            isValid = true;
            break;
        }
    }
    args.IsValid = isValid;
}
</script>

自定義驗證器

<form id="form1" runat="server">
    <div>
        <asp:CheckBoxList ID="CheckBoxList1" runat="server">
            <asp:ListItem>A</asp:ListItem>
            <asp:ListItem>B</asp:ListItem>
            <asp:ListItem>C</asp:ListItem>
            <asp:ListItem>D</asp:ListItem>
        </asp:CheckBoxList>

        <asp:CustomValidator ID="CustomValidator1" ErrorMessage="You need to select at least one item." ForeColor="Red" ClientValidationFunction="ValidateCheckBoxList" runat="server" />
    </div>
    <asp:Button ID="BtnCheck" runat="server" OnClick="BtnCheck_Click" Text="Check" />
</form>

如果捕獲異常System.InvalidOperationException ,則在Web.config添加以下語句

<appSettings>
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM