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功能可以工作,但常规路由不再工作。
这是否意味着我必须在所有页面上实现永久链接功能?
如果你想从根目录(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#,所以我不能确定是否有错误。