나는 ASP.NET MVC 4 응용 프로그램을 개발 그리고 난 싶어요 Global.asax
의 패턴 :ASP.NET MVC 페르시아 친화적 인 URL을
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>
로
위의 방법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 (제품 이름의 세그먼트)에 대해 올바르게 작동합니다 : 당신은 내가 확장 방법은 ToFriendlyUrl
라는 만들거야 볼 수 있습니다
http://www.mysite.com/Product/Category/3/category-type-one
하지만, 페르시아어 URL에 나는 예를 들어,이 URL을 받고 있어요 :
http://www.mysite.com/Product/Category/1/--------------
예 번째가 있어야 할 :
페르시아어 URL을 사용하도록 코드를 변경하려면 어떻게해야합니까?
PS : 나는 우리가 하부 및 상부 케이스가없는 페르시아어 알고있는 나는이 코드 줄 생략 :
urlToEncode = (urlToEncode ?? "").Trim().ToLower();
을하지만 여전히 나는 같은 문제를했습니다.
if ((ch >= '0' && ch <= '9') ||
(ch >= 'a' && ch <= 'z'))
는 영어의 숫자를 의미하고, 문자가 허용되는 경우
감사
고마워요, 거기에 (예 : 링크를 수동으로 구성하는) 모든 예제가 있습니까? 예를 들어 웹 사이트에서 이러한 유형의 URL을 어떻게 처리합니까? –
이것은 표준 Html.ActionLink 메소드 + 페르시아 문자를 정규화하는 확장 메소드입니다. 당신은 여기에'ToSeoUrl' 메서드를 찾을 수 있습니다 : http://www.dotnettips.info/post/894 – VahidN
덕분에, 당신의 메서드를 사용하고 있습니다. 그러나 다음과 같은 Action 메서드를 사용할 때 문제가 있습니다 :'@ Html.ActionLink (항목 : 이름, actionName : "카테고리", 컨트롤러 이름 : "제품", routeValues : new {id = item.Id, productName = item.Name.ToSeoUrl()}, htmlAttributes : null)'내 URL은 다음과 같습니다./Product/Category/2? productName = دربهای چوبی'/ Product/Category/2/دربهای-چوبی'을 어떻게 가질 수 있습니까? –