Пользовательский валидатор

Итак, у меня есть собственный валидатор, который работает только частично. В основном он проверяет две вещи: заполнены ли два поля и существует ли уже то, что было введено в эти поля, в базе данных. Проверка по базе данных работает нормально, но проверка того, заполнены ли поля, нет. Я не хочу использовать валидаторы обязательных полей, так как я хочу, чтобы все сообщения об ошибках находились в одном и том же месте на странице. Я почти уверен, что напортачил с чем-то простым, но я просто не могу его найти.

<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

И снова первая часть не работает, вторая работает нормально.


person Sara    schedule 29.07.2011    source источник


Ответы (2)


Возможно, текстовое поле считается пустой строкой, а не ничем. Попробуйте это для своей проверки:

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

2 вещи нужно проверить

  1. Добавьте следующее FieldRequired = "True"
    <asp:CustomValidator ID="cvDuplicate" runat="server" ControlToValidate="txtCoursePrefix" ValidateEmptyText="true" FieldRequired="True"></asp:CustomValidator>

  2. На стороне сервера проверьте, настроено ли следующее место this.cvDuplicate.Enabled = false;

Если вы установите следующее свойство как false. Никакой проверки не произойдет, даже если вы настроите ее из базы данных на стороне сервера. Так что будьте осторожны при их настройке. Если вы не настроили эти свойства в .ASCX и не задали попытку настроить их из базы данных на стороне сервера (код C #), они будут работать. this.cvDuplicate.Enabled = true;

ValidateEmptyText = "False"
FieldRequired = "False"

person Akshay Anand    schedule 10.08.2017