1

我正在使用 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'。

希望这是有道理的。有任何想法吗?

4

1 回答 1

2

您可以使用:

routes.MapRoute(
            name: "Default",
            url: "{*p}",
            defaults: new { controller = "Home", action = "Index", p = UrlParameter.Optional }
        );

星号表示这是一条包罗万象的路线。请记住,这些路线非常贪婪,请确保它低于任何特定路线。

您还可以向该路由添加路由约束,该路由约束可以确定该页面是否存在于数据库中或其他东西中。有关更多信息,请参阅此帖子

于 2013-10-25T11:22:08.630 回答