2010-07-02 287 views
2

这还没有发生到我面前,但由于某些原因服务器端验证事件不会被触发: 我使用下面Сustom服务器端验证

<asp:CustomValidator runat="server" id="RefId" OnServerValidate="Ref_Id" ControlToValidate="txtRefId" ErrorMessage="Referral ID is Required." ></asp:CustomValidator> 

代码当我在下面的代码上修复调试器时,代码将不会被触发。也检查下面的代码。

Protected Sub Ref_Id(ByVal source As System.Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) 
    Dim isPresent As String 
    isPresent = MembershipManager.IsReferalApproved(Me.txtRefId.Text) 
    If isPresent <> "" Then 
     addReferralName() 
     args.IsValid = True 
    Else 
     lblRefNotValid.Text = "Referral IDNO does not exist." 
     lblRefNotValid.Visible = True 
     Me.txtRefName.Text = "" 
     args.IsValid = False 
    End If 
End Sub 
+0

你可以用'e.Value',而不是'Me.txtRefId.Text'因为它们是相同。 'CustomValidator'从'ControlToValidate'获取'ValidationProperty'属性值。对于'TexBox'这是'Text'属性。 – abatishchev 2010-07-02 12:54:34

回答

0

请问您的txtRefId Autopostback和CausesValidation?

+0

我相信TextBox不会做任何(自动)回发。只有CustomValidator会这样 - 因为调用代码隐藏方法 – abatishchev 2010-07-02 13:17:33

+0

您处于错误的轨道上。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.autopostback.aspx 验证器不回发。它是验证Codebehind当你做一个Page.Validate() – 2010-07-02 13:41:14

1

您的自定义验证的控制应该具备的使用性能ValidateEmptyText = True或验证不会在一个空的文本框触发

+0

我在添加ValidateEmptyText = True,但仍然在服务器端验证未触发,只有当我从此asp标记中消除Controltovalidate时验证触发。但我的验证函数每次调用。 – Amol 2010-07-02 13:27:17

+0

加回你的controltovalidate。在文本框中放置一些默认文本。查看验证是否触发。 – MrMagoo 2010-07-02 14:24:20