使用MVC4构建CMS。我对MVC的体验有限,并尝试创建一个可以处理CMS创建的页面结构的MapRoute。这些页面的URL将与website.com/About
一致为了解决这个问题,我提出了以下内容
routes.MapRoute(
name: "Default",
url: "{p}",
defaults: new { controller = "Home", action = "Index", p = UrlParameter.Optional }
);
这适用于根级页面但如果我想要子网页如website.com/About/OurTeam
我得到了404.理想情况下,我想要的是能够将.com位之后的整个url作为字符串传递并在控制器中对其进行排序,或者将级别拆分为参数数组并传递通过'p'。
希望这是有道理的。有什么想法吗?
答案 0 :(得分:2)
您可以使用:
routes.MapRoute(
name: "Default",
url: "{*p}",
defaults: new { controller = "Home", action = "Index", p = UrlParameter.Optional }
);
星号表示它是一个包罗万象的路线。请记住,这些路线非常贪婪,请确保这些路线低于任何特定路线。
您还可以向此路由添加路由约束,以确定该页面是否存在于数据库中。有关详细信息,请参阅this post。