šlj*_*ker 5 routes asp.net-mvc-2
我已经定义了以下路线:
routes.MapRoute(
null,
"foo/{id}/{title}",
new { controller = "Boo", action = "Details" }
);
Run Code Online (Sandbox Code Playgroud)
当我调用这个方法时:
Url.Action("Details", "Boo", new { id = article.Id, title = article.Title })
Run Code Online (Sandbox Code Playgroud)
我得到以下网址:
http://localhost:57553/foo/1/Some%20text%20Š
我想创建一个新的路由,它将小写所有字符并替换其中一些字符.
例如
http://localhost:57553/foo/1/some-text-s
规则:
Uppercase -> lowercase
' ' -> '-'
'Š' -> 's'
etc.
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
似乎是自定义路线的完美候选者:
public class MyRoute : Route
{
public MyRoute(string url, object defaultValues)
: base(url, new RouteValueDictionary(defaultValues), new MvcRouteHandler())
{
}
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
values = new RouteValueDictionary(values);
var title = values["title"] as string;
if (!string.IsNullOrEmpty(title))
{
values["title"] = SEOify(title);
}
return base.GetVirtualPath(requestContext, values);
}
private string SEOify(string title)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
将注册如下:
routes.Add(
"myRoute",
new MyRoute(
"foo/{id}/{title}",
new { controller = "Boo", action = "Details" }
)
);
Run Code Online (Sandbox Code Playgroud)
现在你所要做的就是在SEOify我离开的功能中实现你的SEO要求.顺便说一句,你可以从StackOverflow为问题标题做的方式中获得灵感.
| 归档时间: |
|
| 查看次数: |
1331 次 |
| 最近记录: |