Проверка ASP.NET MVC RemoteAttribute не работает - Действие не выполняется
я пытаюсь понять, почему действия ValidationController не запускаются.
У меня есть настройки, включенные в проекте web.config:
У меня есть следующий контроллер:
[OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
public class ValidationController : Controller
{
private readonly IUserRepository userRepository;
public ValidationController(IUserRepository userRepository)
{
this.userRepository = userRepository;
}
public JsonResult IsUserNameAvailable(string username)
{
User user = userRepository.Get(u => u.UserName == username);
if (user == null) return Json(true, JsonRequestBehavior.AllowGet);
else return Json(false, JsonRequestBehavior.AllowGet);
}
}
и следующая модель представления:
[Required(ErrorMessage = "Required *")]
[StringLength(50, MinimumLength = 4, ErrorMessage = "Please keep the username between four and twenty character.")]
[Remote("IsUserNameAvailable", "Validation", ErrorMessage = "A user with this username already exists.")]
[Display(Name = "Username")]
public string UserName { get; set; }
И у меня есть следующее поле в моей форме:
...
@Html.ValidationMessageFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
@Html.LabelFor(m => m.UserName)
Я делаю AJAX-отправку формы, и у меня уже работает проверка на стороне сервера:
$.post("/Account/Register", $('#registerForm').serialize(), function(){
updateFormWithServerGeneratedErrors();
})
Хотя сервер сгенерировал правильный тег ввода для моего поля:
Я могу вручную выполнить действие, введя URL-адрес: «/ Validation / IsUserNameAvailable? Имя пользователя = SomeName» но Fiddler НЕ показывает какие-либо запросы к этому URL на нажатие клавиш или изменения фокуса.
В соответствии сэтот урок Я неЧтобы это работало, нужно написать любой javascript. И да, у меня уже есть скрипты jquery.validate.js и jquery.validate.unobtrusive.js, загруженные к тому времени, когда я начинаю возиться с формой.
В чем здесь проблема?