2013-06-28 158 views
5

我意識到有很多類似的帖子,但是我還沒有找到一個不幸的工作。基本上,我有一個asp:customvalidator,我試圖添加到驗證組與其他驗證程序,以便所有錯誤消息出現在相同的警報。這裏是的CustomValidator自定義驗證器沒有觸發

<asp:TextBox runat="server" ID="txtVideo1Url" Columns="20" Width="98%" /> 
<asp:CustomValidator runat="server" ID="valURL1" ControlToValidate="txtVideo1Url" OnServerValidate="txtVideo1Url_ServerValidate" Display="None" ValidationGroup="submission" /> 

,這裏是本次活動是不是在所有的觸發事件

protected void txtVideo1Url_ServerValidate(object sender, ServerValidateEventArgs e) 
    { 
     e.IsValid = false; 
     valURL1.Text = "FAIL!"; 
    } 

,我不知道爲什麼。一旦我能得到事件觸發,我可以把一些實際的邏輯,笑loll

更新:我已經注意到,我現在能夠獲得事件觸發,但validationsummary設置爲顯示消息箱中的所有錯誤並且此錯誤不會被添加到消息框中。

+2

你的'UPDATE'的答案是'CustomValidator'嚴格是服務器端驗證機制,而'MessageBox'功能是一個客戶端機制,因此將'CustomValidator'消息放入'MessageBox'。 –

回答

6

您需要將TextBoxCausesValidation屬性設置爲true,像這樣:

<asp:TextBox runat="server" ID="txtVideo1Url" Columns="20" Width="98%" CausesValidation="true" /> 
+0

感謝您的回覆。我只是在文本框中添加了CausesValidation =「true」,但它仍然沒有觸發 –

+2

與其他答案一樣(Ilkka),ValidationGroup屬性是問題,請將其刪除或將其添加到執行回發的控件。 –

1

你將不得不=的ValidationGroup「提交」添加到ASP.NET控件,這將觸發回發。

17

記得設置上的CustomValidator此屬性...

ValidateEmptyText="True" 
+0

這對我而言無需顯式設置文本框上的CausesValidation。 – Andez

+0

謝謝。我的事件沒有被觸發,因爲要驗證的控件是字符串空的 – Alberto

1

如果您的ASPX其他驗證未驗證CustomValidators不火。您可能需要強制一個Page.Validate(「東西」),與您的特定驗證組。我建議看看OnTextChanged事件來強制頁面驗證。