重定向(网址)不起作用

Jat*_*tin 9 asp.net-mvc asp.net-mvc-3

在ASP.net MVC3的上下文中,我在控制器动作中有这行代码,它试图重定向到特定的URL.

return Redirect(returnUrl);
Run Code Online (Sandbox Code Playgroud)

returnUrl是一个包含"/ Home/Index /"的字符串.由于某种原因,重定向没有发生,我仍然在同一个屏幕上.我尝试删除尾部斜杠但没有成功.任何想法为什么没有重定向?

Dar*_*rov 19

Redirect方法旨在用于重定向到您网站的外部网址,并通过传递绝对网址.如果您需要重定向到属于您网站的另一个控制器操作,最好使用它:

return RedirectToAction("Index", "Home");
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您不再需要硬编码网址,并且您的代码不太容易路由更改.

话虽如此,如果你正在调用使用AJAX执行此重定向的控制器操作,你不能指望它将浏览器重定向到任何地方=>它显然会保持在同一页面上.AJAX请求将在所有重定向后成功,并且在成功回调中,您将获得/Home/IndexURL 的最终HTML,就好像它是在没有AJAX的情况下请求的那样.

如果要重定向AJAX调用的成功回调,可以让控制器操作返回,例如,一个JSON对象,指示要重定向到的目标URL:

return Json(new { redirectToUrl = Url.Action("Index", "Home") });
Run Code Online (Sandbox Code Playgroud)

在你的回调中使用window.location.href函数:

success: function(result) {
    window.location.href = result.redirectToUrl;
}
Run Code Online (Sandbox Code Playgroud)