MVC - RouteTable重定向到另一个路由

时间:2016-10-12 11:12:12

标签: c# asp.net-mvc routing routes routetable

我已经开发了2年的产品,由我们自己和合作伙伴销售。 现在,经理希望将源代码提供给我们的合作伙伴,这些合作伙伴将仅用作具有演示许可证的演示应用程序。

所有的演示模块都已经开发出来但我需要展示" Demo"许可证说明的路线(网址)。

示例:

每次致电

  

/控制器1 /措施1

必须将网址转换为

  

/演示/控制器1 /措施1

首先尝试:

routes.MapRoute(
    name: "DefaultDemo",
    url: "Demo/{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

但是,这部分会有效,因为我需要设置" Demo"在我的应用程序中每次调用Controller / Action I时都会打开。

第二次尝试:

routes.MapRoute(
    name: "DefaultDemo",
    url: "{demo}/{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    constraints: new { demo = "Demo" }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, demo = "Demo" }
);

在这一个中,我尝试将其设置为变量" Demo"作为该变量的约束,以防止某人将其更改为其他文本。

然后我尝试使用"默认"路由作为重定向到另一个,通过设置参数" demo",但是这显然失败了,因为它没有这样工作。

第三次尝试:

var demoRoute = routes.MapRoute(
    name: "DefaultDemo",
    url: "{demo}/{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    constraints: new { demo = "Demo" }
);

routes.Redirect(x =>
    x.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional, demo = "Demo" })
)
.To(demoRoute);

在最后一个例子中,我尝试使用RouteMagic nugget重定向旧的"默认"前往Demo的路线,但它没有用。

任何做类似事情的人?

0 个答案:

没有答案