【发布时间】:2015-09-06 21:51:24
【问题描述】:
我需要帮助在 MVC 网站中创建诸如 URL 路由之类的永久链接。
Slug 已设置为 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 功能会起作用,但常规路由不再起作用。
这是否意味着我必须在所有页面上实现永久链接功能?
【问题讨论】:
-
你有一个名为“ctrlName”的控制器和一个名为“actionName”的动作方法吗?如果是,则操作应该有一个名为“slug”的字符串参数。如果否,请在您的路由配置中设置正确的控制器和操作名称。
-
我将 ctrlName 和 actionName 设置为 slug 作为字符串参数。就像我说的 /profile/{Slug} 正在工作。但是 /{Slug} 不是。 /{Slug} 用于相同的 ctrlName actionName。
-
顺便说一下,例外情况是:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、更改名称或暂时不可用。
-
如果你把你的“配置文件”路由(带有“/{slug}”的那个)放在默认路由之后,然后从默认路由中删除默认控制器和操作。这样,默认路由仍然适用于例如 url '/Home/Show' 并且配置文件路由应该匹配所有 '/xyz' url's。
标签: c# asp.net-mvc routes