Пользовательский валидатор - PullRequest
0 голосов
/ 29 июля 2011

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

<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 ]

1 голос
/ 29 июля 2011

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

If String.IsNullOrEmpty(txtCoursePrefix.Text) Or String.IsNullOrEmpty(txtCourseNum.Text) Then
    cvDuplicate.ErrorMessage = "Required"
    args.IsValid = False
End If
0 голосов
/ 10 августа 2017

Необходимо проверить 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"

0 голосов
/ 29 июля 2011
'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
...