Каков наилучший способ проверки полей с использованием ASP.NET MVC?

c# asp.net-mvc validation

5711 просмотра

16 ответа

2109 Репутация автора

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

Автор: samiq Источник Размещён: 19.08.2008 07:02

Ответы (16)


1 плюс

2109 Репутация автора

Мой путь:

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

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

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

Автор: samiq Размещён: 19.08.2008 07:10

5 плюса

17145 Репутация автора

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

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

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

Автор: Dale Ragan Размещён: 19.08.2008 07:32

1 плюс

16317 Репутация автора

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

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

Автор: Chuck Размещён: 19.08.2008 07:36

6 плюса

17145 Репутация автора

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

Обновить:

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

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

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

Автор: Dale Ragan Размещён: 19.08.2008 08:14

0 плюса

31090 Репутация автора

Дейл Раган написал:

Вы не можете использовать элементы управления AjaxToolKit в ASP.NET MVC

Как AJAX обрабатывается при переполнении стека? JQuery это делает? В своем посте «Кодирующий ужас» « Секреты JavaScript» Ниндзя Джефф писал об использовании JQuery при написании переполнения стека.

Конечно, они не кодировали это вручную. Я сделал это однажды со всем XMLHttpRequest JavaScript, когда термин «AJAX» был популяризирован в 2005 году. Это был кошмар.

Автор: Zack Peterson Размещён: 19.08.2008 08:26

1 плюс

17145 Репутация автора

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

Автор: Dale Ragan Размещён: 19.08.2008 08:50

0 плюса

17145 Репутация автора

@ Чак - Не беспокойся. Вот для чего ТАК. Вы чему-то учитесь, а человек, задающий вопрос, чему-то учится.

Автор: Dale Ragan Размещён: 19.08.2008 08:55

1 плюс

32228 Репутация автора

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

Автор: Dane O'Connor Размещён: 21.08.2008 04:57

0 плюса

85571 Репутация автора

Как AJAX обрабатывается при переполнении стека? JQuery это делает?

  • Щелкните правой кнопкой мыши на странице
  • Найдите «View Source Source» во всплывающем меню
  • Нажмите его

:-)

Автор: Orion Edwards Размещён: 25.08.2008 02:20

26 плюса

1162 Репутация автора

Решение

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

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

public JsonResult CheckUserName(string username)
{
    return Json(CheckValidUsername(username));
}
Автор: Daniel Pollard Размещён: 25.08.2008 03:04

4 плюса

12752 Репутация автора

В Preview 5 появилось несколько новых функций проверки.

http://weblogs.asp.net/scottgu/archive/2008/09/02/asp-net-mvc-preview-5-and-form-posting-scenarios.aspx

Автор: Matt Hinze Размещён: 02.09.2008 05:33

1 плюс

120 Репутация автора

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

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

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

Автор: Kasper Размещён: 07.09.2008 10:32

1 плюс

2704 Репутация автора

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



class User {

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

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

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

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

Автор: Emad Размещён: 02.11.2008 03:26

6 плюса

23241 Репутация автора

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

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

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

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

Я написал в блоге статью, описывающую все детали.

Автор: Adrian Grigore Размещён: 21.06.2009 11:59

0 плюса

72996 Репутация автора

Если вы хотите использовать готовые функциональные возможности, но хотите расширить их, взгляните на мой ответ здесь на вопрос о IDataError.

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

Я объясняю, как использовать связыватель моделей для добавления проверки на уровне класса вашей модели без необходимости использования, IDataErrorчто, как вы видели здесь, может быть довольно неуклюжим. Он по-прежнему позволяет использовать атрибуты [Обязательные] или любые другие пользовательские атрибуты проверки, но позволяет добавлять или удалять отдельные ошибки модели. Чтобы больше узнать о том, как использовать аннотации данных, я настоятельно рекомендую этот пост от Скотта Гу .

Автор: Simon_Weaver Размещён: 17.01.2010 01:01

0 плюса

2047 Репутация автора

Одним из способов реализации проверки в ASP.NET MVC является использование аннотаций данных вместе с проверкой на стороне клиента. В этой статье показано, как мы можем сделать это для сгенерированных каркасом модели классов объектов.

Автор: Bikal Lem Размещён: 09.08.2010 09:14
Вопросы из категории :
32x32