Как обрабатывать проверку, когда JavaScript отключен в ASP.NET - PullRequest
1 голос
/ 04 апреля 2011

Я использую некоторые типичные элементы управления проверки ASP.NET на моем веб-сайте.Теперь я пытаюсь отключить JavaScript в своем браузере, чтобы протестировать мое приложение, и, конечно, Validation Controls больше не работает.Я думаю, что лучше попытаться заставить их работать, используя одно из предложенных здесь решений, вместо того, чтобы реинвестировать колесо и создать слой проверки для страницы или моих объектов -Я правильно думаю? -

Что вы думаете об этих параметрах и почему:

  1. Включите в событие нажатой кнопки код, чтобы проверить, является ли страница действительной, а если нет, явно вызвать метод Page.Validate();

  2. Проверьте, включен ли JavaScript, и если нет, то мне следует позвонить Page.Validate();

Если у вас есть лучший способ сделать это, пожалуйста, сообщитея знаю.

Ответы [ 3 ]

3 голосов
/ 04 апреля 2011

Проверка формы Javascript предназначена исключительно для удобства пользователя.Это мешает им отправлять форму с неверным номером телефона или чем-то еще.

Все входные данные должны фактически проверяться на сервере при получении любого запроса.Вот идеальный ход, и вы увидите, что браузер без включенного javascript не представляет особой проблемы:

browser -> javascript validation (optional) -> server validation (if this fails, go back to initial page with errors)

Так что, даже если у них нет JS, страница все равно отправляетданные, то вы можете вернуть ошибку с сервера.Обычно это более сложный пользовательский интерфейс (полная перезагрузка страницы, потенциальная перепечатка входных данных, если вы не заполняете формы), поэтому JS часто включается в схемы проверки.

1 голос
/ 04 апреля 2011

Элементы управления проверкой предназначены для проверки , прежде всего на стороне сервера. Проверка на стороне клиента является необязательной (см. Свойство EnableClientScript). Так что, если они не работают с отключенным Javascript, то, возможно, вам не хватает небольшого шаблонного кода на вашей странице, такого как этот фрагмент из документации MSDN на Page.IsValid :

private void ValidateBtn_Click(Object Sender, EventArgs E)
{
    Page.Validate();
    if (Page.IsValid == true)  // yes, it is written this way in the MSDN documentation
        lblOutput.Text = "Page is Valid!";
    else
        lblOutput.Text = "Some required fields are empty.";
}

Вы также можете позвонить по номеру Page.Validate и проверить Page.IsValid в событии OnLoad на своей странице, чтобы предотвратить переход обратной передачи к следующему шагу, когда необходимо повторно отправить форму. Возможно, вам даже не нужно явно вызывать Validate() - Button.CausesValidation по умолчанию имеет значение true.

0 голосов
/ 04 апреля 2011

Вам потребуется выполнить пользовательскую проверку на стороне сервера ... http://msdn.microsoft.com/en-us/library/aa479013.aspx (информация внизу)

Примерно так:

<%@ Page Language="C#" %>
<script runat="server">

      void Button1_Click(Object sender, EventArgs e) {
         if (Page.IsValid) {
            Label1.Text = "VALID ENTRY!";
         }
      }

      void ValidateNumber(object source, ServerValidateEventArgs args)
      {
         try 
         {
            int num = int.Parse(args.Value);
            args.IsValid = ((num%5) == 0);
         }
         catch(Exception ex)
         {
            args.IsValid = false;
         }
      }

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <p>
            Number: 
            <asp:TextBox id="TextBox1" 
             runat="server"></asp:TextBox>

            <asp:CustomValidator id="CustomValidator1" 
             runat="server" ControlToValidate="TextBox1" 
             ErrorMessage="Number must be even" 
             OnServerValidate="ValidateNumber"></asp:CustomValidator>
        </p>
        <p>
            <asp:Button id="Button1" onclick="Button1_Click" 
             runat="server" Text="Button"></asp:Button>
        </p>
        <p>
            <asp:Label id="Label1" runat="server"></asp:Label>
        </p>
    </form>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...