Validação ASP.NET MVC RemoteAttribute não está funcionando - Ação não está sendo executada

Eu tenho puxado meu cabelo tentando descobrir porque as ações do ValidationController não estão sendo acionadas.

Eu tenho configurações ativadas no web.config do projeto:

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

Eu tenho o seguinte controlador:

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

e o seguinte viewmodel:

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

E eu tenho o seguinte campo no meu formulário:

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

Eu faço o envio do formulário ajax e já tenho a validação do lado do servidor funcionando perfeitamente:

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

Embora o servidor tenha gerado a tag de entrada correta para o meu campo:

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

Eu posso acertar manualmente minha ação digitando na url: "/ Validation / IsUserNameAvailable? Username = SomeName", mas o Fiddler NÃO está mostrando nenhuma solicitação feita para esta URL em pressionamentos de tecla ou alterações de foco.

De acordo comeste tutorial Eu não preciso escrever nenhum javascript para fazer isso funcionar. E sim, eu tenho scripts jquery.validate.js e jquery.validate.unobtrusive.js já carregados no momento em que começo a mexer com o formulário.

Qual é o problema aqui?

questionAnswers(5)

yourAnswerToTheQuestion