Как в общем случае реализовать перезапись URL в методе MapRoute?



Я пытаюсь переписать URLs из C # 'Паскаль-кейс в SEO-дружественном формате.

Например, я хочу что-то вроде/User/Home/MyJumbledPageName выглядеть так:

/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 файл в корне, я сопоставил эти маршруты:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    // without this the first URL is blank:
    routes.MapRoute(
        name: "Default_Home",
        url: "index", // hard-coded?? it works...
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

    routes.MapRoute(
        name: "Home",
        // the method calls here do not seem to have any effect:
        url: GetSEOFriendlyToken("{action}") + "/" + GetSEOFriendlyToken("{id}"),
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}



С этим кодом, URL, такой как/AboutTheAuthor являетсяне преобразуется в то, что я хочу, что бы./about-the-author



Кажется, что мой вызов метода игнорируется, чтоздесь происходит? И что'Это обычный способ реализовать это?

Ответы на вопрос(2)

Ваш ответ на вопрос