我有一个包含多个值的 asp:ListBox。用户必须始终在此框中选择一个特定项目,并可选择其他项目。
做这个的最好方式是什么?
提前致谢!
我认为没有 ASP.Net 验证器符合您的开箱即用要求,您需要使用CustomValdiator
并编写服务器和客户端代码来执行验证
例子:
<script type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
function clientValidate(sender, args) {
args.IsValid = false;
$("#" + sender.controltovalidate + " option:selected").each(function (index, item) {
if ($(this).text() == "QuestionText1") {
args.IsValid = true;
return;
}
});
}
</script>
<asp:ListBox runat="server"
SelectionMode="Multiple" ID="lb" AppendDataBoundItems="false"
DataTextField="QuestionText" DataValueField="ID"
>
<asp:ListItem Text="text1" />
<asp:ListItem Text="text2" />
</asp:ListBox>
<br />
<br />
<asp:CustomValidator ErrorMessage="errormessage" ControlToValidate="lb"
ClientValidationFunction="clientValidate"
OnServerValidate="cv_ServerValidate"
runat="server" ID="cv" />
<asp:Button Text="text" runat="server" />
protected void cv_ServerValidate(object sender, ServerValidateEventArgs e)
{
e.IsValid = false;
foreach (ListItem item in this.lb.Items)
{
if (item.Selected)
{
if (item.Text.ToLower().Trim() == "questiontext1")
{
e.IsValid = true;
break;
}
}
}
}
我要做的是在提交表单时进行一些 javascript 验证,然后进行服务器端验证以确保他们提交的内容是有效的。
您也可以使用自定义验证控件来完成此操作,然后只需检查以确保页面在回发时有效。