RedirectToAction在页面中显示404,但仍然重定向

时间:2013-11-02 19:01:59

标签: c# jquery asp.net-mvc-2

我有一个带有以下代码的Controller方法:

ClearAuthenticationCookies();
FormsAuthentication.SetAuthCookie(EmailAddress, false);

RedirectToAction("Index", "Home");

var responseObject = new responseObject
{
    responseCode = "2",
    responseMessage = "No"
};
return Json(new {responseObject = responseObject});

这是通过ajax从其他网站执行的,但未在浏览器中显示正确的网址。如果我直接登录,它可以工作:

 $.ajax({
        type: "POST",
        url: "http://localhost:51437/UserAccount/SignOn2",
        dataType: 'json',
        data: jsonData,
        crossDomain: true,
        success: function(result) {
        },
        error: function(result) {
        }
    });

我还必须在实际登录之前单击我的链接两次,但找不到该页面。

1 个答案:

答案 0 :(得分:2)

您的控制器签名应为public RedirectResult SignOn(...)return RedirectToAction("Index", "Home");是您应从控制器返回的对象。在此之后不要返回任何JsonResult

<强>更新 您可以通过一个请求返回一个响应。 要实现您的目标,您有两种选择。首先:返回json结果,然后当客户端收到json结果并验证它时,您可以向服务器发送另一个请求,然后重定向到另一个页面。或者您可以从客户端重定向,使用window.location.replace通过js更改当前页面。此外,您可以在服务器上准备链接以实现所有.net路由优势,并将其包含在json结果中,而不是像这样:

$.ajax {
  ..
  ..
  ..
  success: function(data) {
    alert(data.message_for_user);
    window.location.replace(data.url_to_redirect);
  }
}