.net &引用;“所选项目的最大数量”-ListBox的验证程序
我问自己,是否有一种简单的方法可以检查列表框中最多有5个选定项目。必须至少选择一项,最多选择5项 我需要带有服务器端验证的CustomValidator吗.net &引用;“所选项目的最大数量”-ListBox的验证程序,.net,asp.net,validation,listbox,.net,Asp.net,Validation,Listbox,我问自己,是否有一种简单的方法可以检查列表框中最多有5个选定项目。必须至少选择一项,最多选择5项 我需要带有服务器端验证的CustomValidator吗 非常感谢…您可以使用CustomValidator例程来完成 <asp:CustomValidator ID="ListBox5ItemsValidator" runat="server" OnServerValidate="ListBox5ItemsValidator_ServerValidate" ClientVal
非常感谢…您可以使用CustomValidator例程来完成
<asp:CustomValidator ID="ListBox5ItemsValidator" runat="server"
OnServerValidate="ListBox5ItemsValidator_ServerValidate"
ClientValidationFunction="ListBox5ItemsValidator_ClientValidate"
ControlToValidate="MyListBox">
</asp:CustomValidator>
我已尝试实现CustomValidator服务器事件,但我收到的消息是:Sys.ArgumentException:控件和行为的值不能为null。参数名称:元素。我认为这与Ajax ValidationCalloutExtender有关。我发现了一些关于这个问题的信息,似乎ValidationCalloutExtender和
EnableClientScript=“false”
存在问题。这个页面更好地描述了这个问题,并提供了一个解决方案(即使对于像我的customvalidator这样不那么琐碎的事情):如果您可以使用jQuery提供ClientValidationFunction,我会将这个问题标记为已回答。非常感谢。
protected void ListBox5ItemsValidator_ServerValidate(
object source, ServerValidateEventArgs args) {
int selectionCount = 0;
foreach (ListItem item in MyListBox.Items) {
if (item.Selected) selectionCount++;
}
args.IsValid = (selectionCount >= 1 && selectionCount <= 5);
}
function ListBox5ItemsValidator_ClientValidate(sender, args) {
var selectionCount = $('#<% =MyListBox.ClientID %> option:selected').length;
args.IsValid = (selectionCount >= 1 && selectionCount <= 5);
};
ListBox MyListBox = (ListBox)FormView1.FindControl("MyListBox");