AJAX MVC3 jquery ajax回调总是成功

Jos*_*e3d 1 jquery data-annotations asp.net-mvc-3

我有以下问题我有这个由ajax调用的post动作:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AX_Login(LoginVM usersubmitted)
{
   if (ModelState.IsValid)
   {
      return Json(new { success = true });
   }
   else
   {
      return Json(new { success=false, error = true });
   }
}
Run Code Online (Sandbox Code Playgroud)

另一方面,我有一个按钮的以下jquery处理程序:

    $("#Jquery_LoginButton").click(
        function () {
         $.ajax({
            type: "POST",
            url: "@(Url.Action("AX_Login","Users"))",
            data:$("#MiniLoginForm").serialize(),
            success: function (result) 
            {
                alert("Good");
            },
            error: function () 
            {
                alert("Bad");
            }
        });

         }
    )
Run Code Online (Sandbox Code Playgroud)

我的问题:已达到行动,但ajax呼叫始终以成功结束 - 即使模型无效 - .

问题:

  • 你知道为什么会发生这种情况如果我设定为假成功吗?如果模型无效但我不会看到优雅的东西,我可以抛出异常.

  • 您如何通过Data Annotations和Ajax正常管理验证?

dkn*_*ack 6

你总是得到"成功"是正确的,因为你的要求总能奏效.$.ajax不知道什么数据回来了.因此,error只有在您的请求失效时才会获得(例如404)

你必须这样做

$.ajax({
    type: "POST",
    url: "@(Url.Action("AX_Login","Users"))",
    data:$("#MiniLoginForm").serialize(),
    success: function (result) 
    {
        if (result.success) 
        {
            alert("Good");
        } 
        else 
        {
            alert("Bad");
        }
    },
    error: function () 
    {
        alert("Request failed");
    }
});
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助