Shine

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

在ASP.NET MVC中URL Routing是一个很好的规范URL的方法.但有时候您也许会需要把指定的字符串格式化成正常和安全的URL.我们都知道,一般域名注册的要求是只能有数字.字母和横线的,而我们常常会用到数据库中的信息作为Url中的一部分比如定位到文章作者页面的时候,常常会把作者的名字包含进去.

假如作者的名字叫tu zhi. 作者信息页面的URL假设是这样:<a href="http://www.cnblogs.com/tu zhi">兔纸</a>,其中tu zhi是从数据中取得的作者名称.

如果我们请求这条链接的时候,我们发现跳转后的地址是这样的:http://www.cnblogs.com/tu%20zhi 这样URL就会显得非常的不美观,也显得不规范.我们的目标是把它转换成http://www.cnblogs.com/tu-zhi 如果您说这也没什么啊?我看%20就比较好看, 那么当作者姓名为tu&zhi的时候是什么情况呢? 有兴趣的话您可以试试看,闲话不多说了,直接进入正题.

对这种字符串的处理方法很简单,一个方法足矣:

        /// <summary> 
/// 转换成url
/// </summary>
/// <param name="text">文本</param>
/// <returns>url字符</returns>
public static string ToUrlName(this string text)
{
if (text == null)
throw new Exception("Can't Url convert a null string."); //为空时不能转换
var result = text.Trim().Replace(" ", "-"); //转换
var replacer = new Regex(@"[^\w\-]", RegexOptions.Compiled); //正则表达式
result = replacer.Replace(result, "").ToLower();
return result;
}

调用的时候就可以这样:

string author = Strings.ToUrlName("tu zhi");

好了,这篇文章到此就结束了,希望对您有一点小小的帮助. 下篇文章会介绍一些自定义的HtmlHelper扩展.如果您感兴趣可以继续关注兔纸的文章.

 

posted on 2012-01-02 21:41  lizongshen1990  阅读(2783)  评论(7编辑  收藏  举报