首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET MVC将单个控制器映射到网站根目录

ASP.NET MVC将单个控制器映射到网站根目录
EN

Stack Overflow用户
提问于 2015-09-08 20:22:14
回答 1查看 1.7K关注 0票数 2

我正在工作的一个ASP.NET MVC 5网站,有一个公开的“营销”网站,其中包含一些静态的网页与公司,法律,社会,联系我们等,一个未登录的用户可以访问。然后,一旦登录,就有一个网站的后端,注册用户可以访问功能。

最初,我让所有的公众“营销”页面去http://www.mywebsite.com/Marketing/Abouthttp://www.mywebsite.com/Marketing/Social等。

然而,企业希望所有的“营销”页面都可以从根网站上访问一个目录,所以上面的链接可以通过http://www.mywebsite.com/Abouthttp://www.mywebsite.com/Social等方式访问。

我知道我可以通过为每一个“营销”页面注册不同的路线来实现以下方法:

代码语言:javascript
运行
复制
        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。

还有其他想法吗?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-08 22:31:09

我确实有这个问题。一个更简单但更硬编码的解决方案是

代码语言:javascript
运行
复制
routes.MapRoute("MarketingPages", "{action}",
  new { controller = "Marketing" },
  new { action = @"About|Social" });

最后一个匿名对象将路由限制为匹配操作与提供的正则表达式匹配的路由,这是您希望拥有营销页面的urls列表。像‘/东西’这样的任何其他网址都会通过下面的路线。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32466591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档