Каков наилучший способ реализовать проверку полей с помощью ASP.NET MVC? - PullRequest
45 голосов
/ 19 августа 2008

Я создаю общедоступный веб-сайт с использованием ASP.NET, и как часть поставляемого мне продукта мне нужно создать сайт администратора для ввода данных, показанных на общедоступном сайте, мне было интересно, какие методы или процедуры используют люди для проверки записи с использованием ASP.NET MVC.

Ответы [ 15 ]

26 голосов
/ 25 августа 2008

Посмотрите на плагин JQuery Validation Этот плагин удивителен, он прост в реализации и обладает всеми функциями, которые вам когда-либо могут понадобиться, включая удаленную проверку через AJAX.

Также можно найти пример метода контроллера MVC здесь , который в основном использует тип действия JsonResult, например:

public JsonResult CheckUserName(string username)
{
    return Json(CheckValidUsername(username));
}
6 голосов
/ 21 июня 2009

IMO с использованием xVal с jQuery и DataAnnotationsModelBinder - лучшая комбинация.

Иногда, однако, существуют правила проверки, которые не могут быть полностью проверены на стороне клиента, поэтому вам необходимо использовать удаленную проверку на стороне клиента.

Я нашел способ реализовать удаленную проверку на стороне клиента с помощью xVal / jQuery.validate, чтобы

  • Правила проверки остаются исключительно в вашей модели ASP.NET MVC
  • Вы пишете каждое правило проверки только один раз и только в легко тестируемом коде C #. Там нет JavaScript или другой стороны клиента.
  • Нет необходимости разветвлять или иным образом изменять xVal или jquery.validate
  • Все, что вам нужно сделать для каждого нового правила проверки удаленной формы, это извлечь из базового класса, показанного в этой статье.

Я написал статью в блоге , в которой описываются все детали.

6 голосов
/ 20 августа 2008

@ Чак - Вы еще не можете использовать элементы управления AjaxToolKit в ASP.NET MVC. Они работают только в модели обратной передачи страницы ASP.NET.

Обновление:

По состоянию на 20 августа 2008 г. вы можете использовать только файлы сценариев Ajax Control Toolkit внутри ASP.NET MVC Framework. Вот ссылка на релиз .

Кроме того, вот руководство по их использованию для создания всплывающего календаря Стивена Вальтера.

Я просто хочу убедиться, что всем дана правильная информация, если они читают эту ветку.

5 голосов
/ 19 августа 2008

Мне нравится использовать библиотеку LiveValidation в моих приложениях ASP.NET MVC. С его помощью я смог настроить способ проверки на клиенте и на сервере. Таким образом, пользователь узнает, что что-то не так, еще до отправки формы, а затем использует функциональность на стороне сервера для других отдаленных случаев.

Я начал с этого поста, который отлично справляется с настройкой аналогичной установки:

Проверка на стороне модели на основе клиента для ASP.NET MVC

1 голос
/ 02 ноября 2008

Мой любимый способ выполнения проверки клиента и сервера с использованием атрибутов на основе модели. Я написал небольшой пост об этом и также выпустил исходный код, который в основном позволит вам создать класс, подобный этому



class User {

    [Required]
    public string Name{get;set;}

    [Email][Required]
    public string Email {get;set;}
}

И соответствующий код javascript будет сгенерирован для выполнения проверки клиента, а бегущий на стороне сервера будет проверять вашу отправленную форму.

Прочитать пост более здесь

1 голос
/ 08 сентября 2008

Используйте гибрид проверки на стороне клиента и на стороне сервера.

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

Проверка на стороне сервера, с другой стороны, должна быть обязательной: никогда не доверяйте вводу от клиента. Я определенно рассмотрю возможности, предоставляемые платформой ASP.NET MVC в Preview 5 (как описано в ответе Мэтта Хинзе ),

1 голос
/ 21 августа 2008

Вы можете использовать .net validation framework на codeplex, если вы хотите как клиент-серверную проверку. Он генерирует код для плагина проверки jQuery на основе правил, определенных в модели. Кроме того, если вы используете расширенные функциональные возможности фреймворка, вы можете вручную управлять настройками плагина jQuery validate. Оформить заказ Быстрый запуск MVC .

1 голос
/ 20 августа 2008

@ Зак : Да, я тоже читал этот пост и, основываясь на этом посте, SO использует jQuery в качестве библиотеки javascript. Я не могу говорить за команду SO, но мое образованное предположение состоит в том, что, скорее всего, они используют функции ajax внутри jquery для обработки своих запросов ajax. На самом деле это не так уж плохо, если вы используете библиотеку javascript, такую ​​как jQuery , Prototype и MooTools . Затем вы используете новое возвращаемое значение JsonResult ActionResult для своих действий и делаете запросы Ajax против них. Эти библиотеки инкапсулируют для вас объекты XmlHttpRequest и упрощают выполнение вызовов ajax и безопасность браузера.

1 голос
/ 19 августа 2008

Вы смотрели на элементы управления, поставляемые с AjaxToolKit? Я использовал MaskedEditExtender и ValidatorCalloutExtender и был очень доволен результатами.

@ Дейл - спасибо, что поправили меня! Не знал об этом (только начал использовать инструментарий на прошлой неделе). Пожалуйста, не обращайте внимания на мое предложение:)

1 голос
/ 19 августа 2008

Мой путь:

Я следую примеру, показанному в контроллере учетных записей, который поставляется с выпуском Preview 4, где поле проверяется в контроллере, и если обнаружена ошибка, то массив строковых ошибок агрегируется для последующего показа в том же виде. который начал запрос.

Я также следил за мыслями Стивена Уолтера о MVC , и я думаю этот пост замечательно заполнить поля данными, представленными для его изменения, перед его отправкой еще раз.

Что вы, ребята, используете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...