【问题标题】:Page Routing with Partial View & Custom URL's带有部分视图和自定义 URL 的页面路由
【发布时间】:2016-03-08 18:00:05
【问题描述】:

我有自定义路由来添加一个 slug 到我的 Urls 的末尾,其中包含和 Id 用于 SEO 目的。

我希望能够拥有 SEO 友好的网址,如下所示:

http://localhost:12345/OurWork/Project/26/MortgageBancLLC

我已经为 Project/ 页面实现了这一点,但其他页面却崩溃了。我使用局部视图在其他页面上显示我的最新项目。此局部视图显示主页、服务、关于等页面上的最后三个项目。

我尝试重新排序我的路线列出的顺序,但它只部分有效。如果我颠倒路线的顺序,则页面会加载,但我的 url 会更改为:

http://localhost:12345/OurWork/Project/26?slug=CompanyNameHere

这是我的路线:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default",
                "{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                new[] { "Web.Controllers" }
            );

                //This is my SEO friendly route
                routes.MapRoute(
                    "SeoFriendlyRoute", 
                    "{controller}/{action}/{id}/{slug}",
                    new { controller = "OurWork", action = "Project", id = UrlParameter.Optional, slug = UrlParameter.Optional }
                );

这是我传递我的 id 和 slug 的链接:

<a href="@Url.Action("Project", "OurWork", new {id = item.Project.Id, slug = @item.Client.Name })">CompanyName</a>

我的猜测是我需要添加另一个路由,但是当主页使用一个路由而部分视图将使用另一个路由时,我不确定如何处理。

请指教。谢谢

【问题讨论】:

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


    【解决方案1】:

    您不需要第二条路线“SeoFriendlyRoute”。只需将第一条路由更改为在 url 末尾包含 slug 并使 slug 可选。这样,如果您在主页或任何其他不需要 slug 的页面上,它就可以工作。

    您可以将控制器保留为“home”,将操作保留为“Index”。

    routes.MapRoute(
                    "Default",
                    "{controller}/{action}/{id}/{slug}",
                    new { controller = "Home", action = "Index", id = UrlParameter.Optional, slug = UrlParameter.Optional },
                    new[] { "Web.Controllers" }
                );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-10
      • 2017-05-05
      • 2011-04-04
      • 2019-07-27
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      相关资源
      最近更新 更多