Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

public JsonResult CheckUserName(string username)
{
    return Json(CheckValidUsername(username));
}

Ответ 2

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

Update:

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

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

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

Ответ 3

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

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

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

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

Я написал статью статью в блоге об этом описании всех деталей.

Ответ 4

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

Я начал с этого поста, который очень хорошо работает над настройкой аналогичной настройки:

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

Ответ 6

Мой путь:

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

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

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

Ответ 10

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

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

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

Ответ 11

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



class User {

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

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

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

Прочитайте сообщение здесь

Ответ 12

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

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

Как работает AJAX при переполнении стека? Это делает JQuery? В своем отчете Coding Horror Секреты JavaScript-ниндзя Джефф написал об использовании JQuery при написании.

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

Ответ 13

@ Chuck - не беспокойтесь. Для этого SO. Вы узнаете что-то, и человек, задающий вопрос, узнает что-то.

Ответ 14

Как работает AJAX при переполнении стека? Делает ли это JQuery?

  • Щелкните правой кнопкой мыши на странице
  • Ищите "View Page Source" во всплывающем меню
  • Нажмите

: -)

Ответ 15

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

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

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