MVC3捕获URL中的所有路径段

时间:2015-05-22 02:03:19

标签: asp.net-mvc asp.net-mvc-3 iframe asp.net-mvc-routing

我正在尝试将我们的MVC3应用程序的遗留区域嵌入到网站新的根布局中的iframe中。

目的是节省时间并避免网站新旧部分之间的Javascript和CSS样式冲突。

到目前为止,我已经能够有条件地将来自旧区域的流量重定向到区域控制器中OnActionExecuting方法中的新URL。

e.g。 http://localhost:80/Area/Account/Profilehttp://localhost:80/App/Area/Account/Profile

我现在的麻烦是设置一个捕获所有路径,可以将整个URL传递给特定的操作和控制器,这样我就可以获取URL并将其应用到iFrame。

我在我的路由中有这个但它没有传递给动作的路径,如果路径中有多个段,它根本不会到达路径:

routes.MapRoute(
    "AppRedirect", // Route name
    "App/{*page}", // URL with parameters
    new { controller = "Home", action = "App", page = UrlParameter.Optional }
);

有没有办法可以让路线使用包括所有段的完整路径?

或者是否有更好的方法将其中一个项目区域嵌入到新根布局中的iFrame中,同时保持类似于旧配置的可读URL?如果可以帮助我,我不想修改旧区域的结构或路由配置。

1 个答案:

答案 0 :(得分:0)

您知道网址中可能包含多少个细分受众群?您可以设置多个路径(层次结构 - 大多数段过滤为一个)指向相同的控制器操作,并在那里完成其余操作。

routes.MapRoute(
"AppRedirect2", // Route name
"App/{seg1}/{seg2}", // URL with parameters
new { controller = "Home", action = "App", seg1 = UrlParameter.Optional, seg2 = UrlParameter.Optional }
);

routes.MapRoute(
"AppRedirect1", // Route name
"App/{seg1}", // URL with parameters
new { controller = "Home", action = "App", page = UrlParameter.Optional }
);

等...