Сторона клиента Нестандартного элемента верификации ASP.NET и Серверная проверка, не стреляя

Столкнувшись с проблемой, переносимой сегодня, вам нужно обновить sails-hook-orm до последней версии, например :

"sails-hook-orm": "^2.1.1",
70
задан photo_tom 14 October 2014 в 14:49
поделиться

6 ответов

Ваш CustomValidator будет только стрелять когда TextBox не пусто.

Если необходимо удостовериться, что это не пусто затем, Вам будет нужен a RequiredFieldValidator также.

Примечание: Если элемент управления вводом пуст, никакие функции проверки не вызваны, и проверка успешно выполняется. Используйте управление RequiredFieldValidator, чтобы потребовать, чтобы пользователь ввел данные в элемент управления вводом.

Править:

Если Ваш CustomValidator указывает ControlToValidate атрибут (и Ваш исходный пример делает) затем Ваши функции проверки будут только вызваны, когда управление не будет пусто.

Если Вы не указываете ControlToValidate затем Ваши функции проверки будут вызваны каждый раз.

Это открывает второе возможное решение проблемы. Вместо того, чтобы использовать отдельное RequiredFieldValidator, Вы могли опустить ControlToValidate атрибут от CustomValidator и установите свои функции проверки, чтобы сделать что-то вроде этого:

Клиентский код (JavaScript):

function TextBoxDCountyClient(sender, args) {
    var v = document.getElementById('<%=TextBoxDTownCity.ClientID%>').value;
    if (v == '') {
        args.IsValid = false;  // field is empty
    }
    else {
        // do your other validation tests here...
    }
}

Серверный код (C#):

protected void TextBoxDTownCity_Validate(
    object source, ServerValidateEventArgs args)
{
    string v = TextBoxDTownCity.Text;
    if (v == string.Empty)
    {
        args.IsValid = false;  // field is empty
    }
    else
    {
        // do your other validation tests here...
    }
}
112
ответ дан umlcat 24 November 2019 в 13:12
поделиться

Вы проверяли, что управление, вызывающее сообщение назад, CausesValidation установил на tru и что этому не присвоили группу проверки ему?

Я не уверен, что еще могло бы вызвать это поведение.

3
ответ дан Daniel 24 November 2019 в 13:12
поделиться

Проверка серверной стороны не будет стрелять, если клиентская проверка будет недопустима, обратная передача не, отправляют.

Разве у Вас нет некоторой другой проверки, которая не передает?

Клиентская проверка не выполняется, потому что Вы указали ClientValidationFunction="TextBoxDTownCityClient" и это будет искать названную функцию TextBoxDTownCityClient как функция проверки, но имя функции должен быть TextBoxDAddress1Client

(как Вы записали),

0
ответ дан Davide Vosti 24 November 2019 в 13:12
поделиться

Проверка подлинности на стороне клиента вообще не выполнялась в моей веб-форме, и я понятия не имел, почему. Оказывается, проблема в том, что имя функции javascript совпадает с идентификатором элемента управления сервера.

Так что вы не можете сделать это ...

<script>
  function vld(sender, args) { args.IsValid = true; }
</script>
<asp:CustomValidator runat="server" id="vld" ClientValidationFunction="vld" />

Но это работает:

<script>
  function validate_vld(sender, args) { args.IsValid = true; }
</script>
<asp:CustomValidator runat="server" id="vld" ClientValidationFunction="validate_vld" />

Я предполагаю, что это конфликтует с внутренним .NET Javascript?

5
ответ дан Bill Gates 24 November 2019 в 13:12
поделиться

Также убедитесь, что вы не используете группы проверки, так как эта проверка не сработает, если свойство validationgroup было установлено и не было явно вызвано через

 Page.Validate({Insert validation group name here});
3
ответ дан 24 November 2019 в 13:12
поделиться

Используйте это:

<asp:CustomValidator runat="server" id="vld" ValidateEmptyText="true"/>

Для проверки пустого поля.

Два валидатора добавлять не нужно!

124
ответ дан 24 November 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: