Проверка ASP.NET MVC RemoteAttribute не работает - Действие не выполняется

Я дергал себя за волосы, пытаясь понять, почему действия ValidationController не запускаются.

У меня есть настройки, включенные в проекте web.config:

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

У меня есть следующий контроллер:

[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; }

И у меня есть следующее поле в моей форме:

<form id="registerForm">
     ...
     @Html.ValidationMessageFor(m => m.UserName)
     @Html.TextBoxFor(m => m.UserName)
     @Html.LabelFor(m => m.UserName)
</form>

Я делаю AJAX-отправку формы, и у меня уже работает проверка на стороне сервера:

$.post("/Account/Register", $('#registerForm').serialize(), function(){
   updateFormWithServerGeneratedErrors();
})

Хотя сервер сгенерировал правильный тег ввода для моего поля:

<input ... data-val-remote-url="/Validation/IsUserNameAvailable" data-val-remote-additionalfields="*.UserName" data-val-remote="A user with this username already exists." ... >

Я могу вручную выполнить свое действие, набрав в URL: «/ Validation / IsUserNameAvailable? Username = SomeName», но Fiddler НЕ показывает никаких запросов к этому URL при нажатии клавиш или изменении фокуса.

Согласно сэтот урок Мне не нужно писать какой-либо JavaScript, чтобы это работало. И да, у меня уже есть скрипты jquery.validate.js и jquery.validate.unobtrusive.js, загруженные к тому времени, когда я начинаю возиться с формой.

В чем здесь проблема?

Ответы на вопрос(5)

Ваш ответ на вопрос