内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
如何动态创建网址/链接,例如:www.restaurant.com/restaurant/restaurant-name-without-some-characters-like-space-coma-etc/132
我可以使用哪些关键字来搜索关于此主题的一些文章?(如何在asp.net mvc中生成和处理这种类型的url)
有一些问题:如何生成链接?(商店slu in在DB?)重定向或如果slu is不规范?
我一直在数据库中一直存储slug,以及它们引用的任何实体。因此,对于博客文章,“posts”表中会有一个“slug”字段。
要在ASP.Net MVC中处理它很简单 - 你只需要使用一个常规路线来捕获参数中的slu((甚至可能仅仅使用{id}),然后你的控制器会查找数据库中的slu,,加载实体,并正常显示。
虽然你可以使用一个简单的正则表达式替换空格,而不用生成你的slu,,但实际上这很快就会崩溃。需要考虑可能出现在标题中的各种字符。博客与这个确切目的有很大关系; 他分享了一个可以从字符串中去除变音符号的功能。
所以,你的“生成slu”“算法通常应该采取以下形式:
你必须使用如下的东西。
Routes.MapRoute(
"Post",
"posts/{id}/{*title}",
new { controller = "Posts", action = "view" }
);
和一个简单的扩展方法:
public static class UrlExtensions
{
public static string ResolveSubjectForUrl(this HtmlHelper source, string subject)
{
return Regex.Replace(Regex.Replace(subject, "[^\\w]", "-"), "[-]{2,}", "-");
}
}