我正在使用 ASP.NET MVC 4 开发一个应用程序,我希望我的 URL 如下所示:
http://www.mysite.com/Product/Category/2/دربهای-چوبی
为此,我在以下位置使用这种 URL 模式Global.asax
:
routes.MapRoute(
name:"ViewProduct",
url:"Product/Category/{Id}/{productName}",
defaults: new { controller = "Product", action = "Category", id = UrlParameter.Optional, productName = "" }
);
在我看来,我正在使用这种方式生成我的 URL:
<a href="/Product/Category/@item.Id/@Url.ToFriendlyUrl(item.Name)">@item.Name</a>
如您所见,我正在创建名为的扩展方法ToFriendlyUrl
:
public static string ToFriendlyUrl(this UrlHelper helper,
string urlToEncode)
{
urlToEncode = (urlToEncode ?? "").Trim().ToLower();
StringBuilder url = new StringBuilder();
foreach (char ch in urlToEncode)
{
switch (ch)
{
case ' ':
url.Append('-');
break;
case '&':
url.Append("and");
break;
case '\'':
break;
default:
if ((ch >= '0' && ch <= '9') ||
(ch >= 'a' && ch <= 'z'))
{
url.Append(ch);
}
else
{
url.Append('-');
}
break;
}
}
return url.ToString();
}
上述方式适用于英文 URL(产品名称的段):
http://www.mysite.com/Product/Category/3/category-type-one
但是对于波斯语 URL,我得到了这个 URL,例如:
http://www.mysite.com/Product/Category/1/--------------
例如第二个应该是:
http://www.mysite.com/Product/Category/2/دربهای-چوبی
如何更改代码以使用波斯 URL?
PS:我知道在波斯语中我们没有大小写,我省略了这行代码:
urlToEncode = (urlToEncode ?? "").Trim().ToLower();
但我仍然有同样的问题。
谢谢