asp.net-mvc - 重定向(url)不起作用

标签 asp.net-mvc asp.net-mvc-3

在 ASP.net MVC3 的上下文中,我在 Controller 操作中有这行代码,它尝试重定向到特定的 url。

return Redirect(returnUrl);

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

最佳答案

Redirect 方法旨在用于重定向到您网站的外部 URL,并向其传递绝对 URL。如果您需要重定向到属于您网站的另一个 Controller 操作,最好使用以下命令:

return RedirectToAction("Index", "Home");

这样,您就不再需要对 URL 进行硬编码,并且您的代码对于路由更改的脆弱性也降低了。

话虽这么说,如果您调用使用 AJAX 执行此重定向的 Controller 操作,您不能指望它将浏览器重定向到任何地方 => 它显然会停留在同一页面上。 AJAX 请求将在所有重定向后成功,并且在成功回调中,您将获得 /Home/Index url 的最终 HTML,就像在没有 AJAX 的情况下请求一样。

如果您想在 AJAX 调用的成功回调中进行重定向,您可以让 Controller 操作返回一个 JSON 对象,该对象指示您要重定向到的目标 URL:

return Json(new { redirectToUrl = Url.Action("Index", "Home") });

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

success: function(result) {
    window.location.href = result.redirectToUrl;
}

关于asp.net-mvc - 重定向(url)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7402701/

相关文章:

asp.net-mvc - 在 ASP.NET MVC3 中使用 Razor 的文件上传控件

c# - Mvc 5 中的 Aspx View

c# - Visual Studio 找不到 SingleInstanceFactory

jquery - MVC Ajax数组post方法不起作用

javascript - 模态窗口第二次打开Javascript停止

c# - 如何在没有 EntityFramework 的情况下使用 ASP.net Core 1 "SignInManager"

.net - 跨所有 subview 的 ASP.NET MVC 3 布局 ViewBag 数据

sql - 如何执行这个搜索结果?

asp.net-mvc-3 - Log4Net 输出到 Mongo

c# - 如何检查 cshtml 中的 null/empty 值