我正在工作的一个ASP.NET MVC 5网站,有一个公开的“营销”网站,其中包含一些静态的网页与公司,法律,社会,联系我们等,一个未登录的用户可以访问。然后,一旦登录,就有一个网站的后端,注册用户可以访问功能。
最初,我让所有的公众“营销”页面去http://www.mywebsite.com/Marketing/About,http://www.mywebsite.com/Marketing/Social等。
然而,企业希望所有的“营销”页面都可以从根网站上访问一个目录,所以上面的链接可以通过http://www.mywebsite.com/About、http://www.mywebsite.com/Social等方式访问。
我知道我可以通过为每一个“营销”页面注册不同的路线来实现以下方法:
routes.MapRoute(
"ShortAbout",
"About",
new { controller = "Marketing", action = "About" }
);
routes.MapRoute(
"ShortSocial",
"Social",
new { controller = "Marketing", action = "Social" }
);然而,由于大约有15个“营销”页面,这似乎是低效的,似乎必须有一个更好的方法来做到这一点。
我还尝试了这里概述的通用路由方法:http://www.wduffy.co.uk/blog/aspnet-mvc-root-urls-with-generic-routing/
但这种方法的问题是,我有一个“营销”页面,与控制器同名,它最终将用户转发到营销子目录。例如,我有一个名为"MachineController“的控制器,而在"MarketingController”中,我有一个动作/页面,名为"Machine",因此它使用上述链接中的方法将用户转发到/Marketing/Machine。
还有其他想法吗?提前谢谢。
发布于 2015-09-08 22:31:09
我确实有这个问题。一个更简单但更硬编码的解决方案是
routes.MapRoute("MarketingPages", "{action}",
new { controller = "Marketing" },
new { action = @"About|Social" });最后一个匿名对象将路由限制为匹配操作与提供的正则表达式匹配的路由,这是您希望拥有营销页面的urls列表。像‘/东西’这样的任何其他网址都会通过下面的路线。
https://stackoverflow.com/questions/32466591
复制相似问题