0

查看代码:

$.post('@Url.Action("SetPlayers", "Game")', { name : t });

控制器代码:

public class GameController : Controller
    {
            [HttpPost]
            public ActionResult SetPlayers(string name)
            {
                // some code...
                return RedirectToAction("Some Action");
            }
    }

当我在方法 SetPlayers 上设置停止点时,方法收到变量并且所有工作但不重定向到操作。我怎样才能改变它?

4

1 回答 1

1

$.post()向服务器发送 AJAX 请求。AJAX 的全部意义在于向您的服务器发送异步 HTTP 请求,而无需导航。如果要重定向,请不要使用 AJAX。您可以改用该window.location.href方法:

window.location.href = '@Url.Action("SetPlayers", "Game")?name=' + encodeURIComponent(t);

或者,如果您只需要有条件地重定向,您可以从指向您要重定向的位置的控制器操作返回 JSON,然后在客户端上执行实际重定向:

[HttpPost]
public ActionResult SetPlayers(string name)
{
    // some code...
    return Json(new redirectTo = { Url.Action("Some Action") });
}

接着:

$.post('@Url.Action("SetPlayers", "Game")', { name : t }, function(result) {
    if (result.redirectTo) {
        // the server returned The location to redirect to as JSON =>
        // let's redirect to this location
        window.location.href = result.redirectTo;
    }
});
于 2013-03-25T07:11:47.567 回答