所以我有一个仅部分工作的自定义验证器。它基本上有两件事要检查:如果填写了两个字段,那么这些字段中输入的内容是否已存在于数据库中。检查数据库工作正常,但检查字段是否填写不是。我不想使用必需的字段验证器,因为我希望错误消息全部位于页面上的完全相同的位置。我很确定我搞砸了一些简单的东西,但我找不到它。
<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
所以再一次是第一部分不起作用,第二部分工作正常。
答案 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件事
添加以下 FieldRequired =&#34; True&#34;
<asp:CustomValidator ID="cvDuplicate" runat="server" ControlToValidate="txtCoursePrefix" ValidateEmptyText="true" FieldRequired="True"></asp:CustomValidator>
在服务器端检查是否设置了以下任何位置 this.cvDuplicate.Enabled = false;
如果将以下属性设置为false。即使您从服务器端的数据库进行设置,也不会进行验证。所以设置它们时要小心。如果您没有在.ASCX上设置这些属性并设置尝试从服务器端的数据库(C#代码)设置它们,那么它们将起作用。 this.cvDuplicate.Enabled = true;
<强> ValidateEmptyText =&#34;假&#34;
FieldRequired =&#34;假&#34; 强>