СУХАЯ Удаленная проверка в ASP.NET MVC 3 - PullRequest
1 голос
/ 24 апреля 2011

Я прочитал великий пост Дэвида Хейдена о MVC 3 Удаленная проверка .

Однако там представлено, что вы должны сделать, чтобы включить удаленную (javascript) проверку. Если у пользователя отключен JavaScript, пост все равно будет сделан, даже если данные недействительны. Поэтому должна выполняться проверка на стороне сервера.

Как мы можем сделать эту проверку СУХОЙ (не повторять себя), насколько это возможно? Конечно, включение того же проверочного кода в действие post, что и в действие удаленной проверки (или просто тот же вызов) может работать, но мне интересно, доступен ли однострочный или что-то более элегантное.

Совершенно приемлемые ответы включают «нет, это невозможно сделать». :)

Ответы [ 3 ]

4 голосов
/ 07 мая 2011

См. Мою статью MSDN Как: реализовать удаленную проверку в ASP.NET MVC Я использую код проверки удаленного клиента в методе HttpPost Create для проверки стороны сервера, когда JavaScript отключен.

[HttpPost]
    public ActionResult Create(CreateUserModel model) {

        // Verify user name for clients who have JavaScript disabled
        if (_repository.UserExists(model.UserName)) {
            ModelState.AddModelError("UserName", ValidationController.GetAltName(model.UserName, _repository));
            return View("Create", model);
        }
2 голосов
/ 24 апреля 2011

Это «можно» сделать, но вам нужно написать свой собственный атрибут, который в основном излучает на стороне клиента и проверяется на стороне сервера. Для меня я просто извлекаю проверочный код в метод и проверяю на сервере. Нечто подобное появилось и в последнее время:

Запретить отправку формы при использовании ненавязчивой проверки в ASP.NET MVC 3

Интересно, можно ли было унаследовать от атрибута remote и добавить свой собственный код на стороне сервера? хм .. может быть, мне придется попробовать это.

Я был бы счастлив, если бы кто-то здесь сказал, что они уже сделали это:)

1 голос
/ 18 марта 2013

Я сделал это, это довольно длинное решение, так что все это доступно в моем блоге здесь:

http://www.metaltheater.com/tech/technical/fixing-the-remote-validation-attribute/

Мне пришлось создать новый подкласс *Класс 1006 *, создайте свой собственный пользовательский механизм связывания моделей, унаследовав от DefaultModelBinder, а затем используйте отражение для вызова средства проверки на контроллере.

...