自定义验证器

时间:2011-07-29 03:31:26

标签: asp.net vb.net validation customvalidator

所以我有一个仅部分工作的自定义验证器。它基本上有两件事要检查:如果填写了两个字段,那么这些字段中输入的内容是否已存在于数据库中。检查数据库工作正常,但检查字段是否填写不是。我不想使用必需的字段验证器,因为我希望错误消息全部位于页面上的完全相同的位置。我很确定我搞砸了一些简单的东西,但我找不到它。

<strong>Course Prefix and Number:</strong>
<asp:TextBox ID="txtCoursePrefix" runat="server" Width="45" MaxLength="4" CssClass="caps"></asp:TextBox>
-
<asp:TextBox ID="txtCourseNum" runat="server" Width="45" MaxLength="6" CssClass="caps"></asp:TextBox>
<span class="required">*
<asp:CustomValidator ID="cvDuplicate" runat="server" ControlToValidate="txtCoursePrefix" ValidateEmptyText="true"></asp:CustomValidator>
</span>

代码背后:

'Check if fields have been filled out
    If txtCoursePrefix.Text Is Nothing Or txtCourseNum.Text Is Nothing Then
        cvDuplicate.ErrorMessage = "Required"
        args.IsValid = False
    End If
'Code that checks values against database goes here
'If matching record does not exist...
    If myValue IsNot Nothing Then
        cvDuplicate.ErrorMessage = "Course number is already taken."
        args.IsValid = False
    End If

所以再一次是第一部分不起作用,第二部分工作正常。

3 个答案:

答案 0 :(得分:1)

可能是文本框被视为空字符串,而不是Nothing。试试这个检查:

If String.IsNullOrEmpty(txtCoursePrefix.Text) Or String.IsNullOrEmpty(txtCourseNum.Text) Then
    cvDuplicate.ErrorMessage = "Required"
    args.IsValid = False
End If

答案 1 :(得分:0)

'Check if fields have been filled out
If String.IsNullOrEmpty(txtCoursePrefix.Text.Trim()) _
        OrElse String.IsNullOrEmpty(txtCourseNum.Text.Trim()) Then
    cvDuplicate.ErrorMessage = "Required"
    args.IsValid = False
End If

答案 2 :(得分:0)

需要检查2件事

  1. 添加以下 FieldRequired =&#34; True&#34;
    <asp:CustomValidator ID="cvDuplicate" runat="server" ControlToValidate="txtCoursePrefix" ValidateEmptyText="true" FieldRequired="True"></asp:CustomValidator>

  2. 在服务器端检查是否设置了以下任何位置 this.cvDuplicate.Enabled = false;

  3. 如果将以下属性设置为false。即使您从服务器端的数据库进行设置,也不会进行验证。所以设置它们时要小心。如果您没有在.ASCX上设置这些属性并设置尝试从服务器端的数据库(C#代码)设置它们,那么它们将起作用。    this.cvDuplicate.Enabled = true;

    <强> ValidateEmptyText =&#34;假&#34;
    FieldRequired =&#34;假&#34;