2010-11-15 25 views

回答

2

您可以使用CustomValidator例程。

<asp:CustomValidator ID="ListBox5ItemsValidator" runat="server" 
    OnServerValidate="ListBox5ItemsValidator_ServerValidate" 
    ClientValidationFunction="ListBox5ItemsValidator_ClientValidate" 
    ControlToValidate="MyListBox"> 
</asp:CustomValidator> 

服務器端代碼:

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 FormView控件,你可以使用

ListBox MyListBox = (ListBox)FormView1.FindControl("MyListBox"); 
+0

我試圖實現的CustomValidator服務器事件,但我得到'消息:Sys.ArgumentException:值不能爲空控制和行爲。參數名稱:element'。我認爲這與Ajax-ValidationCalloutExtender有關。 – 2010-11-15 17:46:59

+0

我發現了一些關於此問題的內容,似乎是ValidationCalloutExtender和EnableClientScript =「false」的問題。 http://ajaxcontroltoolkit.codeplex.com/workitem/17713?ProjectName=ajaxcontroltoolkit – 2010-11-15 17:55:35

+0

這個頁面更好的描述了這個問題,並提供了一個解決方案(即使對於像我的customvalidator這樣不重要的東西): http://www.junnark。 com/Articles/Article0001.aspx 如果你可以用jQuery提供ClientValidationFunction,我會將這個問題標記爲回答。謝謝。 – 2010-11-15 18:09:55