用MVC4在做标签云的时候碰到一个有关问题

用MVC4在做标签云的时候碰到一个问题
比如我现在有如下标签:
asp.net,mvc4,关键字,asp.net mvc4

因为,我想做一个根据标签名查询有多少文章使用这个标签的功能,并列出文章。

控制器代码

public ActionResult Tag(string strTag)
        {
            //根据tag名得到tagid
            var tag = from t in db.Tags
                      where t.TagName == strTag
                      select t;
            int tagid = tag.FirstOrDefault().TagID;

            //根据tagid从表Tag_relationship获取哪些文章使用了这个tag

            var articles = from art in db.Tag_relationships
                           where art.TagID == tagid
                           select art;
            return View(articles.ToList());
        }


然后写了个路由:


routes.MapRoute(
                "Tag",
                "tag/{strTag}",
                new { controller = "Tag", action = "Tag" }
            );


,这样在前台就可以这样访问:
http://localhost:8286/tag/mvc4
http://localhost:8286/tag/关键字
http://localhost:8286/tag/asp.net
http://localhost:8286/tag/asp.net mvc4

然页结果却只有前面二个链接能访问,后面二个带.和空格的都不能访问。报错如下:


HTTP 错误 404.0 - Not Found
您要找的资源已被删除、已更名或暂时不可用。
最可能的原因:

    指定的目录或文件在 Web 服务器上不存在。
    URL 拼写错误。
    某个自定义筛选器或模块(如 URLScan)限制了对该文件的访问。


因为我想URL中带关键字对SEO会好一些,所以我没有用public ActionResult Tag(int id).

大家有没有做过这方面的,请指点一二。
------解决方案--------------------
引用:
不需要替换,而是需要编码。

在url中如果有不可打印的字符,你必须编码。例如
   http://www.abc.com/mysite/1234/page%E4%B8%AD%E5%9B%BD%E4%BA%BA%E6%B0%91%E5%BE%88%E8%A1%8C.html
这里就是因为url路径中有中文,所以需要utf8编码。

与对于url参数编码不同,对……


编码最大的坏处就是降低了链接的可读性。在web 3.0时代,链接不再是面向浏览器的东西,它应该面向最终用户。

我举一些真实的系统的例子:
http://*.com/questions/13668155/mvc-3-action-dependency-injection
http://blogs.msdn.com/b/jasonz/archive/2012/08/15/visual-studio-2012-and-net-framework-4-5-released-to-the-web.aspx
http://www.codeproject.com/Articles/150801/Inheriting-from-an-Internal-WinForms-Designer
http://blog.chromium.org/2012/06/try-chrome-in-metro-mode.html
http://blogs.mcafee.com/mcafee-labs/windows-8-metro-brings-new-security-risks