我一定是做错了。我似乎无法执行我的CustomValidator的ServerValidate方法。
我有一个带有CustomValidator的Visual Basic ASP.NET页面......
<asp:TextBox ID="TextBox1" runat="server" />
<asp:CustomValidator ID="CustomValidator1" runat="server"
ControlToValidate="TextBox1"
ErrorMessage="Friendly message goes here."
Display="Dynamic" />
<asp:Button ID="Button1" runat="server"
Text="Submit"
CausesValidation="True" />
对于这个测试,我的验证设置总是失败......
Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate args.IsValid = False End Sub
但是,单击该按钮时,CustomValidator1_ServerValidate()方法永远不会执行!
Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Page.Validate() If Page.IsValid Then 'it executes the code here! End If End Sub
即使我明确验证该控件......
CustomValidator1.Validate() 'does nothing?
我做错了什么?
答案 0 :(得分:9)
添加属性:
ValidateEmptyText="True"
答案 1 :(得分:2)
您是否将验证器控件提交按钮放在同一个验证组中?
答案 2 :(得分:1)
我知道这是一个愚蠢的问题(或者可能听起来像!)。但你真的输入或更改了文本框中的值吗?我认为如果文本框的内容没有变化,验证器就不会触发。
答案 3 :(得分:1)
首先,您似乎在上面的标记中缺少OnServerValidate属性。
其次,我将检查以确保已将CustomValidator1_ServerValidate设置为Textbox1的ServerValidate事件的事件处理程序。我曾经有过在标记和代码隐藏中更改了validate方法名称的情况,但IDE没有自动更新传递给eventhandler委托的订阅方法名称