-->

如何使用路由在MVC为SEO友好的URL(How to use Routing in MVC for

2019-09-23 09:06发布

一般来说,我们已经在我们的Global.asax文件下面的示例代码。 所以,我的问题是我们如何可以有多个图路线以及如何使用它们???

我想URL,如:


http://domain/Home.aspx/Index/Cricket-Ball/12

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

我想是这样的,但我不知道如何使用此路由,这样我就可以得到搜索引擎友好的网址:


        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default1",
                "{controller}/{action}/{productname}/{id}",
                new { controller = "Home", action = "Index", productname = UrlParameter.Optional, id = UrlParameter.Optional }
            );

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

提前致谢。

Answer 1:

因为这不是一个通用网址,但具体的一个(指向产品),你可以使用:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Products",
            "home/index/{productname}/{id}",
            new { controller = "Home", action = "Index" }
        );

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

所以,一切不匹配“产品”路线将进入“默认”。 请注意,我没有,因为我认为这是一个错误的“的.aspx”添加到溃败。 如果你真的想它,只需将其添加到路由:

routes.MapRoute(
            "Products",
            "home/index.aspx/{productname}/{id}",
            new { controller = "Home", action = "Index" }
        );

另外,我建议使用一个更好的网址:

routes.MapRoute(
            "Products",
            "products/{productname}/{id}",
            new { controller = "Home", action = "Index" }
        );


Answer 2:

您使用路由的例子是ASP.NET MVC,不是的WebForms。 您需要使用不同的差异,在这个博客帖子描述:

http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series。 ASPX

例:

routes.MapPageRoute(
    "route-name",
    "products/{id}",
    "~/Products.aspx");

然后在你的Page_Load你需要提取的路线值id作为这样的:

int id = Page.RouteData.Values["id"] as int;


文章来源: How to use Routing in MVC for SEO Friendly URL