ASP.NETMVC,创建一个类似永久链接的路由配置

本文关键字:链接 配置 路由 一个 创建 NETMVC ASP | 更新日期: 2023-09-27 17:57:27

我需要帮助在MVC网站中创建一个类似永久链接的URL路由。

Slugs已经设置为www.xyz.com/profile/{slug}:代码为:

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

我需要实现的是你在Wordpress永久链接或Umbraco永久链接上看到的URL。我需要www.xyz.com/{Slug}.

我尝试过使用:

 routes.MapRoute(
     name: "Profile",
     url: "{slug}",
     defaults: new { controller = "ctrlName", action = "actionName" }
            );

但这对我不起作用。

编辑:

如果我切换上面的路由配置,slug功能可以工作,但常规路由不再工作。

这是否意味着我必须在所有页面上实现永久链接功能?

ASP.NETMVC,创建一个类似永久链接的路由配置

如果你想从根目录(site.com/{slug})中获取永久链接,那么你可以按原样使用你的slug路由。但对于任何其他控制器/操作,您都需要明确地为它们指定一条高于段塞路线的路线。例如:

routes.MapRoute(
    name: "Services",
    url: "Services/{permalink}/",
    defaults: new { controller = "Page", action = "Services"}
);
routes.MapRoute(
    name: "Requests",
    url: "Requests/{action}/{id}",
    defaults: new { controller = "Requests", action = "Index", area = "" },
    namespaces: new String() {"ProjectNamespace.Controllers"}
);
routes.MapRoute(
    name: "AdminPreferences",
    url: "Admin/Preferences",
    defaults: new { controller = "Preferences", action = "Index", area = "Admin"},
    namespaces: new String() {"ProjectNamespace.Areas.Admin.Controllers"}
);
...
routes.MapRoute(
    name: "Profile",
    url: "{slug}",
    defaults: new { controller = "ctrlName", action = "actionName" }
);

这应该奏效;我以前也做过这个,但恐怕我是从内存和VB中回答的。我在这个文本编辑器中将代码从VB转换为C#,所以我不能确定是否有错误。