【问题标题】:Routing in MVC3 for Content ManagementMVC3 中用于内容管理的路由
【发布时间】:2014-07-04 21:05:54
【问题描述】:

我有一个用 .NET 4.0 编写并使用 MVC3 的内容管理系统。 我的客户希望她的 URL 对 SEO 友好,并给了我一个列表,但他们希望所有动态生成的页面(内容页面)都是一级 URL。

示例: www.example.com/dynamiclygenerated

当我添加到路由表时,url 将类似于

routes.MapRoute("ContentPages", "{*pageRoute}", new { controller = "Pages", action ="ContentPage"}, new[] { "Example namespaces" });

我遇到的问题是它限定了每个 URL 并将其发送到 Pages 控制器。 如果第一级在数据库中,我需要一种路由 URL 的方法。

第一次发帖,如果这个问题太含糊,请见谅。任何帮助或想法将不胜感激!感谢您的宝贵时间。

更新:为了澄清,我有一个限定所有传入 URL 的路由并将它们传递给我的页面控制器。我需要一种方法来过滤请求的 URL,以查看它是否需要内容页面、商店页面,甚至是默认页面。

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-mvc-routing


    【解决方案1】:

    我的问题是我有一条符合所有条件的路线(基本上是一条额外的默认路线) 我必须将其限制为仅接受与我的内容页面存储库中的链接匹配的值。

    我通过添加自定义路由约束来做到这一点,并在 Match 方法中添加逻辑以从我的内容页面存储库中提取与当前 URL 请求匹配的所有实体。如果没有,则返回 false。这允许需要转到下一个控制器以绕过我的第一级的页面捕获所有路由。

    【讨论】:

      【解决方案2】:

      不完全理解您的问题,但如果您有以下情况:

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

      然后创建一个动作链接如:

      @Html.ActionLink("name", "Action","Controller", new { id = ValueToPass }, null)
      

      以上内容可以满足您的需求

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-25
        • 1970-01-01
        • 2016-04-05
        • 2015-06-13
        相关资源
        最近更新 更多