【发布时间】:2020-10-31 19:34:00
【问题描述】:
我正在尝试就我的一项任务的验证功能获得一些帮助。我完全坚持下去了。我们必须创建一个包含多个字段的 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,以确保文本框不为空,并且电子邮件地址和电话号码的格式正确,所以我不确定这个函数如何与它们一起使用。任何帮助将不胜感激。谢谢。
更新:现在我被告知用户可以选择多个复选框,因此 checkboxlist 更合适。但是我们将如何验证数据并将信息包含在验证摘要中?
【问题讨论】:
-
如果您必须从多个选项中仅选择一项,则使用 RadoButtonList 而不是 Checkbox 列表会更简单。
标签: c# asp.net validation