URL을 C#의 파스칼 케이스에서 SEO 친숙한 형식으로 다시 작성하려고합니다.
예를 들어, 나는 /User/Home/MyJumbledPageName
같은 것을 같이 할 :MapRoute 메서드에서 URL 재 작성을 일반적으로 어떻게 구현합니까?
/user/home/my-jumbled-page-name // lower-case, and words separated by dashes
것은 다음의 URL에서 각각 "토큰"을 변환하는 나의 방법 :
public static string GetSEOFriendlyToken(string token)
{
StringBuilder str = new StringBuilder();
for (int i = 0, len = token.Length; i < len; i++)
{
if (i == 0)
{
// setting the first capital char to lower-case:
str.Append(Char.ToLower(token[i]));
}
else if (Char.IsUpper(token[i]))
{
// setting any other capital char to lower-case, preceded by a dash:
str.Append("-" + Char.ToLower(token[i]));
}
else
{
str.Append(token[i]);
}
}
return str.ToString();
}
.. 그리고 내 RouteConfig.cs
루트에있는 파일에서 다음 경로를 매핑했습니다.
(10), /AboutTheAuthor
이 내가 원하는 무엇으로 변환되지 등의 URL, /about-the-author
될 것이다.
내 메소드 호출이 무시 된 것 같습니다. 여기서 어떻게됩니까? 그리고 이것을 구현하는 전통적인 방법은 무엇입니까?
감사합니다. @LostInComputer! 이것은 나를 위해 토끼 구멍을 조금 더 내려다 보니, 나는 당신의 코드를 연구 해왔다.나는 당신이 "null coalescing operator"를 사용하고 있다는 것을 배웠습니다. "??"는 삼항 연산자의 속기입니다. 또한 Visual Studio에서 'Route'를 마우스 오른쪽 버튼으로 클릭하고 'Peek Definition'을 선택하여 'Route'에 'base'를 호출하는 데 필요한 생성자 매개 변수를 사용하고 있음을 알 수 있습니다. 그렇지 않으면'GetRouteData'와'GetVirtualPath'를 오버라이드하는 방법을 어떻게 알고 있습니까? 프레임 워크에서 이러한 메소드가 호출되는 위치는 어디입니까? –
내가 가진 다른 질문은'GetActualValue' 메소드가이 로직에 대한 요구 사항이고,이 클래스를 프로젝트에 넣을 좋은 곳은 어디입니까? –
'GetVirtualPath'는 MVC가'@ Html.Action'을 호출 할 때처럼 URL을 생성하기 위해 호출됩니다. 'GetRouteData'는 그 반대로, URL로부터 컨트롤러 액션을 얻기 위해 MVC에 의해 호출됩니다. 내가 어떻게 알았지? 나는 때때로 오픈 소스 인 MVC 소스 코드를 통해 갈 것이다. – LostInComputer