asp.net中列表框的验证器

时间:2011-10-21 14:40:27

标签: c# asp.net validation listbox

<asp:ListBox ID="lst_newGrpMembers" 
             DataValueField="Name" 
             SelectionMode="Multiple"
             Width="120px" 
             ToolTip="Press ctrl to select multiple users" 
             runat="server">
</asp:ListBox>

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" 
                            runat="server" 
                            ControlToValidate="lst_newGrpMembers"
                            ErrorMessage="Atleast one member required" 
                            CssClass="Error" 
                            Text="*Atleast one member required"
                            ValidationGroup="CreateGroupValidationGroup">
</asp:RequiredFieldValidator>

我有一个列表框的必填字段验证器,它会在列表框中没有条目的情况下验证并显示错误,但是当我将项目添加到列表框时,它仍然显示错误。当我选择我添加的列表框项目并单击提交时,它工作正常。如何验证列表框。

3 个答案:

答案 0 :(得分:10)

RequiredFieldValidator上,尝试将InitialValue设置为清空字符串:

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"          
    InitialValue=""
    ControlToValidate="lst_newGrpMembers" 
    ErrorMessage="Atleast one member required"  
    CssClass="Error"  
    Text="*Atleast one member required" 
    ValidationGroup="CreateGroupValidationGroup"> 
</asp:RequiredFieldValidator> 

答案 1 :(得分:0)

列表框的内容不会发送到服务器,只会发送选定的项目。这是表单在HTTP中的工作方式。添加后选择您的项目或将其放入隐藏的表单字段(通过脚本)以发送到服务器。

通过脚本可以通过各种方式解决这个问题。我确实找到了这个控制(我没用过它),我相信这对你有用:http://www.metabuilders.com/Tools/DynamicListBox.aspx

这里还会详细介绍: http://forums.asp.net/t/1687079.aspx/1 他们使用jQuery在回发中选择项目:


function save() {
$("#lstFiles").each(function () {
      $("#lstFiles option").attr("selected", "selected");
});
return true;
}

答案 2 :(得分:0)

问题在于它验证ListBox中是否存在SELECTED值。当您发布它时,您可能只会收到ListBox的选定值。将项添加到ListBox时,将SELECTED属性设置为true,并禁用ListBox以避免取消选择。

像这样:

    ListItem myItem = new ListItem();
    myItem.Text = TextBox1.Text;
    myItem.Selected = true;
    ListBox1.Items.Add(myItem);

希望它有所帮助。