RedirectToAction无法通过$ .ajax调用同一控制器的操作

时间:2014-04-01 17:51:02

标签: jquery asp.net-mvc-4

我通过ajax调用调用一个名为RedirectToHome的控制器动作方法。在该动作方法中,我使用RedirectToAction来执行Spa控制器的Index方法。即使代码成功执行,此重定向也不起作用。我假设发生了这种情况,因为RedirectToHome是通过ajax调用调用的。这就是为什么我也尝试在第一次请求的ajax调用成功时使用ajax调用调用Index方法。但是即使通过第二次ajax调用,我也看到了Index方法被调用但是视图从未被渲染。控制台中没有错误。

$.ajax({
            url: '@HttpContext.Current.Request.Url' + "Account/RedirectToHome",
            data: { email: userEmail },
            success: function (data) {
                    $.ajax({
                    url: '@HttpContext.Current.Request.Url' + "Spa/Index",
                    data: { isAuthenticated:true,email: userEmail },
                        success: function () {
                    }
                    });
            }
    });

 public ActionResult RedirectToHome(string email)
    {
        if (ValidateDomain(email))
            return RedirectToAction("Index", "Spa", new { isAuthenticated = true, email = email });
        else
            return RedirectToAction("ExternalLoginFailure");

    }

1 个答案:

答案 0 :(得分:1)

使用@Url.Action(),而不是Spa/Index

$.ajax({
            data: { email: userEmail },
            success: function (data) {
                    $.ajax({
                    url: '@Url.Action("Index", "Spa")',
                    data: { isAuthenticated:true,email: userEmail },
                        success: function () {

                      //use your redirect code here, not in action
                      if(result.isValidDomain)
                      {
                        document.location.href = '@Url.Action("Index", "Spa")/' + '?isAuthenticated=' + true;
                      }
                      else
                      {
                        document.location.href = '@Url.Action("ExternalLoginFailure", "Controller")';
                      }

                    }
                    });
            }
    });