如何让RedirectToAction使用相对路径

时间:2018-03-05 15:21:36

标签: c# asp.net-mvc asp.net-core

我正在使用RedirectToAction重定向到另一个视图,但是我在IIS中的某个站点中使用了一个应用程序,因此必须有一个前缀必须转到该路径。

当我执行RedirectToAction时,它只会重定向到根目录。

我需要它来尊重当前路径并沿着这些路线重定向。

例如:

我在https://localhost:8085/app/custompath/controller1/action

我打电话 return RedirectToAction("controller2", "action");

我被重定向到

https://localhost:8085/controller2/action

而不是

https://localhost:8085/app/custompath/controller2/action

2 个答案:

答案 0 :(得分:1)

RedirectToAction,或者允许您根据路径信息(如控制器,操作,名称等)生成URL的任何类似方法,仅适用于上下文中当前运行的应用程序。您不能使用它们为其他应用程序中的路径生成URL。

可以只使用Redirect字符串网址,但您可以生成所需的网址。典型方法是在应用程序设置中设置外部应用程序的基本路径。

答案 1 :(得分:0)

如果您的Starup.cs

中有类似内容
app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");

            routes.MapRoute(
                name: "custom",
                template: "app/custompath/{controller=Home}/{action=Index}");
        });

然后你可以这样做重定向:

var url = Url.RouteUrl("custom", new { controller = "controller2", action = "action" });
return Redirect(url);

顺便提一下,如果需要,.NET Core内置URL Rewrite