【问题标题】:Custom server side validation in ASP.NET + VB.NETASP.NET + VB.NET 中的自定义服务器端验证
【发布时间】:2010-07-02 11:16:19
【问题描述】:

这在我之前没有发生过,但由于某种原因,服务器端验证事件没有被触发: 我正在使用下面的代码

<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

【问题讨论】:

  • 您可以使用e.Value 代替Me.txtRefId.Text,因为它们是相同的。 CustomValidatorControlToValidate 获取属性 ValidationProperty 值。对于TexBox,这是Text 属性。

标签: asp.net vb.net validation


【解决方案1】:

您的自定义验证器控件应具有属性 ValidateEmptyText = True 否则验证不会在空文本框上触发

【讨论】:

  • 我在 中添加了 ValidateEmptyText = True 但仍然没有触发服务器端验证,只有当我从这个 asp 标签中消除 Controltovalidate 时才会触发验证。但是我的验证函数每次都会调用。
  • 添加回您的控件以进行验证。在您的文本框中放置一些默认文本。查看验证是否触发。
【解决方案2】:

您的 txtRefId 是否自动回发和 CausesValidation?

【讨论】:

  • 我相信 TextBox 不会做任何(自动)回发。只有 CustomValidator 可以 - 因为调用代码隐藏方法
  • 你走错了路。 msdn.microsoft.com/en-us/library/… 验证器不回发。当您执行 Page.Validate() 时,它会在 Codebehind 上进行验证
猜你喜欢
  • 2017-05-03
  • 2010-10-16
  • 2018-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
  • 1970-01-01
  • 2011-01-01
相关资源
最近更新 更多