如何将路由配置更改为自定义路由?

时间:2019-10-05 18:47:08

标签: c# asp.net-mvc asp.net-mvc-5 entity-framework-6

我试图将网站URL更改和优化为SEO友好的网址。我的意思是我将〜/ Home / Contact之类的URL更改为〜/ contact等。我也将〜/ Home / Index的URL也更改为〜/ home。

当我运行网站是因为将attr [Route(“〜/ home”)]添加到索引操作应用程序中时,找不到默认路由。

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

        routes.MapMvcAttributeRoutes();

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

我不知道如何将MapRoute更改为新的SEO友好URL。 我也不想丢失我的mvc URL模式

1 个答案:

答案 0 :(得分:0)

您可以在App_Start文件夹中使用此类:

public static class RoutingConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {

            #region IgnoreRoutes
            routes.IgnoreRoute("Content/{*pathInfo}");
            routes.IgnoreRoute("Scripts/{*pathInfo}");
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.IgnoreRoute("favicon.ico");
            routes.IgnoreRoute("{resource}.ico");
            routes.IgnoreRoute("{resource}.png");
            routes.IgnoreRoute("{resource}.jpg");
            routes.IgnoreRoute("{resource}.gif");
            routes.IgnoreRoute("{resource}.txt");
            #endregion

            routes.LowercaseUrls = true;
            routes.MapMvcAttributeRoutes();
           // AreaRegistration.RegisterAllAreas();

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}",
                defaults:
                    new
                    {
                        controller = MVC.Home.Name,
                        action = MVC.Home.ActionNames.Index,
                        id = UrlParameter.Optional
                    },
                namespaces: new[] {$"{typeof (RoutingConfig).Namespace}.Controllers"}
                );
        }

并以Global.asax.cs Application_Start方法使用它。

  RoutingConfig.RegisterRoutes(RouteTable.Routes);

我从T4MVC nuget package用过。