ASP.NET MVC 将单个控制器映射到网站的根目录
ASP.NET MVC map single controller to root of website
我正在开发一个 ASP.NET MVC 5 网站,该网站有一个 public "marketing" 网站,其中包含一些静态页面,其中包含有关公司、法律、社会、联系我们的信息,等等,一个未登录的用户可以访问。然后,一旦登录,网站后端就会有注册用户可以访问的功能。
最初我将所有 public "marketing" 个页面转到 http://www.mywebsite.com/Marketing/About, http://www.mywebsite.com/Marketing/Social,等等
但是,企业希望所有 "marketing" 页面都可以从根网站向下访问一个目录,因此上面的 links 可以通过以下方式访问:
http://www.mywebsite.com/About, http://www.mywebsite.com/Social,等等
我知道我可以使用以下方法通过为每个 "marketing" 页面注册单独的路由来使其工作,如下所示:
routes.MapRoute(
"ShortAbout",
"About",
new { controller = "Marketing", action = "About" }
);
routes.MapRoute(
"ShortSocial",
"Social",
new { controller = "Marketing", action = "Social" }
);
但是,由于大约有 15 "marketing" 页,这似乎效率低下,似乎必须有更好的方法来做到这一点。
我还尝试了此处概述的通用路由方法:http://www.wduffy.co.uk/blog/aspnet-mvc-root-urls-with-generic-routing/
但这种方法的问题是我有一个 "marketing" 页面,与控制器同名,它最终将用户转发到营销子目录。例如,我有一个名为 "MachineController" 的控制器,在 "MarketingController" 中我有一个名为 "Machine" 的 action/page,因此它将用户转发到 /Marketing/Machine 使用上面的方法 link.
还有其他想法吗?提前致谢。
我正好遇到了这个问题。一个更简单但更硬编码的解决方案是
routes.MapRoute("MarketingPages", "{action}",
new { controller = "Marketing" },
new { action = @"About|Social" });
最后一个匿名对象将路由限制为匹配路由,其中操作与提供的正则表达式匹配,这只是您想要营销页面的 urls 的列表。任何其他 url 像 '/something' 落入下面的路线。
我正在开发一个 ASP.NET MVC 5 网站,该网站有一个 public "marketing" 网站,其中包含一些静态页面,其中包含有关公司、法律、社会、联系我们的信息,等等,一个未登录的用户可以访问。然后,一旦登录,网站后端就会有注册用户可以访问的功能。
最初我将所有 public "marketing" 个页面转到 http://www.mywebsite.com/Marketing/About, http://www.mywebsite.com/Marketing/Social,等等
但是,企业希望所有 "marketing" 页面都可以从根网站向下访问一个目录,因此上面的 links 可以通过以下方式访问: http://www.mywebsite.com/About, http://www.mywebsite.com/Social,等等
我知道我可以使用以下方法通过为每个 "marketing" 页面注册单独的路由来使其工作,如下所示:
routes.MapRoute(
"ShortAbout",
"About",
new { controller = "Marketing", action = "About" }
);
routes.MapRoute(
"ShortSocial",
"Social",
new { controller = "Marketing", action = "Social" }
);
但是,由于大约有 15 "marketing" 页,这似乎效率低下,似乎必须有更好的方法来做到这一点。
我还尝试了此处概述的通用路由方法:http://www.wduffy.co.uk/blog/aspnet-mvc-root-urls-with-generic-routing/
但这种方法的问题是我有一个 "marketing" 页面,与控制器同名,它最终将用户转发到营销子目录。例如,我有一个名为 "MachineController" 的控制器,在 "MarketingController" 中我有一个名为 "Machine" 的 action/page,因此它将用户转发到 /Marketing/Machine 使用上面的方法 link.
还有其他想法吗?提前致谢。
我正好遇到了这个问题。一个更简单但更硬编码的解决方案是
routes.MapRoute("MarketingPages", "{action}",
new { controller = "Marketing" },
new { action = @"About|Social" });
最后一个匿名对象将路由限制为匹配路由,其中操作与提供的正则表达式匹配,这只是您想要营销页面的 urls 的列表。任何其他 url 像 '/something' 落入下面的路线。