Проблема с удаленной проверкой в ​​asp.net MVC 3 - PullRequest
0 голосов
/ 06 мая 2011

У меня есть модель человека

public class Person
    {

        public int  ID { get; set; }
        [Required]
        [Remote("UserNameExists", "People", "Username is already taken.")]
        public string Name { get; set; }
        [Required]
        public string LastName { get; set; }



    }

Это мой метод UserNameExists

public JsonResult UserNameExists(string name)
        {
            bool exists = personRepository.GetPersonByName(name.Trim());
            if (!exists)
                return Json(true, JsonRequestBehavior.AllowGet);

            return Json(string.Format("{0} is not avavfddvilable.", name),
                    JsonRequestBehavior.AllowGet);
        }

Когда у меня включен Javascript, он работает просто отлично, но когда я отключаю javascript, это правило не применяется ...

Почему это?

Пожалуйста, помогите.

Изменить для ожидаемого поведения:

Согласно msdn он должен соблюдать это правило даже без Javacript

  1. При необходимости отключите клиентский скрипт в вашем браузере, запустите страницу снова, и введите данные, которые нарушают ограничения проверки.

Когда вы покидаете поле, содержащее неверные данные, вы не видите ошибка проверки, потому что сценарии отключен. Потому что ASP.NET MVC использует ненавязчивый JavaScript, вы не видите ошибки клиентского скрипта. Тем не мение, проверка на стороне сервера выполняется когда вы отправляете форму. (Это хорошая практика для тестирования вашего веба приложение с браузером, который имеет Сценарии отключены.)

Ответы [ 3 ]

2 голосов
/ 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);
        }
1 голос
/ 06 мая 2011

Вы должны продублировать проверочный вызов на сервере - это НЕ работает, как описано в моем тестировании.Смотрите мой пост по адресу: СУХАЯ Удаленная проверка в ASP.NET MVC 3

0 голосов
/ 06 мая 2011

Похоже, у вас отключен JavaScript, и удаленная проверка не удалась.

Для удаленной проверки требуется, чтобы в браузере был включен JavaScript. Для этого используются jQuery и AJAX-вызов.

Цитата из MSDN - это именно то, что вы наблюдаете:

вы не видите ошибку проверки

проверка на стороне сервера выполняется при отправке формы

...