JPr*_*ers 3 asp.net-mvc routes
如果您查看SO问题URL,您将看到ID和"SLUG"被传递给Questions控制器:https://stackoverflow.com/questions/676934/what-do-you-need-to-write-your - 博客引擎.我感到有趣的是,您可以更改URL的"SLUG"部分,而不会影响应用程序路由请求示例的能力.我能想到的唯一方法就是有一条接受id和"SLUG"的路线,并在slug上使用路线约束来确保它遵循一个模式.我必须使用约束来确保两个变量不会导致此路由匹配所有请求.有没有人有更好的方法来实现这一点,或任何更高级的路由方案的例子?
我意识到SLUG是为了人类的可读性,我想在另一个应用程序中复制此功能.实现这一目标的最佳方法是什么?
routes.MapRoute(
"Id + Slug", // Route name
"Test/{id}/{slug}", // URL with parameters
new // Parameter defaults
{
controller = "Test",
action = "Details",
id = "",
slug = ""
},
new { slug = new SlugConstraint() }
);
Run Code Online (Sandbox Code Playgroud)
public class SlugConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext,
Route route,
string parameterName,
RouteValueDictionary values,
RouteDirection routeDirection)
{
string value = values[parameterName].ToString();
return value.Contains("-");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
972 次 |
| 最近记录: |