![](/img/trans.png)
[英]How to return selected items from checkboxlist control in asp.net
[英]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(" 18-24");
Age.Items.Add(" 25-34");
Age.Items.Add(" 35-44");
Age.Items.Add(" 45-54");
Age.Items.Add(" 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.