2013-06-28 215 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事件来强制页面验证。