¿Por qué Request.IsAjaxRequest () no funciona en ASP.NET MVC 3?

Estoy creando un nuevo proyecto, asp.net mvc3 con Razor, y quiero convertir LogOn en una solicitud ajax.

HTML

@using (Ajax.BeginForm("LogOn", "Account", new AjaxOptions { HttpMethod="post", OnSuccess="LoginSubmitted"}))
{
}

Controlado

if (Request.IsAjaxRequest())
{
    return Json(new { ResultMessage = "Username or password provided is incorrect"});
}
else
{
    ModelState.AddModelError("", "The user name or password provided is incorrect.");
}

Todo lo demás se mantiene igual

Primero, mirando la respuesta http con Fiddler, noto que no hay un encabezado x-request-with. Entonces agrego

<input type="hidden" name="X-Requested-With" value="XMLHttpRequest" />

Eso parece funcionar, pero ahora lo que recibo es un objeto Json, que no se está analizando y, en cambio, Google Chrome solo está procesando el Json en la pantalla enviando una aplicación / json doc. Todos los guiones están en su lugar.

También hice esto:

@using (Ajax.BeginForm("Submit", "home", new AjaxOptions { HttpMethod = "Post", OnSuccess="LoginSubmitted"}))
{
}


@section head
{
    <script type="text/javascript">
        function LoginSubmitted(res) {
            alert(res.Message);
        }   
    </script>
}


    public ActionResult Submit(string id)
    {
        if (Request.IsAjaxRequest())
        {
            return Json(new { Message = "Logged In" } );
        }
        else
        {
            return View();
        }
    }

En una forma de mi propia creación, que funciona bien con los ayudantes estándar.

¿Qué esta pasando

Respuestas a la pregunta(1)

Su respuesta a la pregunta