当我想用方法post(javascript)重定向到操作时,控制器方法不会重定向并返回到上一页,为什么?
查看代码:当我想用方法post(javascript)重定向到操作时,控制器方法不会重定向并返回到上一页,为什么?,javascript,asp.net-mvc,Javascript,Asp.net Mvc,查看代码: $.post('@Url.Action("SetPlayers", "Game")', { name : t }); 控制器代码: public class GameController : Controller { [HttpPost] public ActionResult SetPlayers(string name) { // some code...
$.post('@Url.Action("SetPlayers", "Game")', { name : t });
控制器代码:
public class GameController : Controller
{
[HttpPost]
public ActionResult SetPlayers(string name)
{
// some code...
return RedirectToAction("Some Action");
}
}
当我在方法SetPlayers上设置停止点时,该方法接收到变量,并且全部工作,但不重定向到操作。如何更改它?$。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;
}
});
$.post
是ajax请求,所以您不能在控制器端执行此操作。检查打字错误?不应该rediretTo
重定向到吗?正确答案:查看代码$.post('@Url.Action(“SetPlayers”,“Game”),{name:t},function(){window.location.href='@Url.Action(“List”,“Game”);});控制器代码[HttpPost]public void SetPlayers(字符串名称){//some code}方法SetPlayers不返回值。