1

我有一个包含多个值的 asp:ListBox。用户必须始终在此框中选择一个特定项目,并可选择其他项目。

做这个的最好方式是什么?

提前致谢!

4

2 回答 2

1

我认为没有 ASP.Net 验证器符合您的开箱即用要求,您需要使用CustomValdiator并编写服务器和客户端代码来执行验证

例子:

ASPX

<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;
                }
            }
        }
    }
于 2012-07-19T03:45:13.193 回答
0

我要做的是在提交表单时进行一些 javascript 验证,然后进行服务器端验证以确保他们提交的内容是有效的。

您也可以使用自定义验证控件来完成此操作,然后只需检查以确保页面在回发时有效。

于 2012-07-19T02:03:53.123 回答