Отображение URL в веб-формах - разрешить вопросительные знаки и дефисы - PullRequest
0 голосов
/ 11 февраля 2012

Я реализовал сопоставление URL-адресов в нашем приложении ASP.NET 4, но у меня возникла проблема с некоторым нашим контентом.

В некоторых наших продуктах есть дефис "-" или знак вопроса "?" в них. Это не вариант, чтобы удалить это. Название продукта может быть " Мой продукт - хорошо для вас? ".

Мы используем два пользовательских метода: MakeUrlSeoReady и MakeUrlNonSeoReady . Мы заменяем пространство следующим образом: Replace ("", "-"), так как это наиболее дружественное к SEO решение. Тем не менее, мы также должны сделать эту работу с вопросительными знаками и дефисами.

Причина, по которой мы используем методы MakeUrlSeoReady / NonReady, заключается в возможности показать «настоящее» имя.

В настоящее время отображение определяется следующим образом:

routes.MapPageRoute("Produkt visning",
                    "artikler/{Categoryname}/{SubCategoryname}/{ProductName}",
                    "~/SingleProduct.aspx");

Итак, я извлекаю продукт в зависимости от ProductName. Я использую два метода, которые я создал:

    public static string MakeUrlNonSeoReady(string text)
    {
        return text.ToLower().
           Replace("oe", "ø").
           Replace("aa", "å").
           Replace("ae", "æ").
           Replace("-", " ");
    }

    public static string MakeUrlSeoReady(string text)
    {
        return text.ToLower().
            Replace("ø", "oe").
            Replace("å", "aa").
            Replace("æ", "ae").
            Replace(" ", "-");
    }

Итак, на странице SingleProduct.aspx я использую следующую строку для получения из нашей базы данных:

string categoryName = HelperFunctions.MakeUrlNonSeoReady(Page.RouteData.Values["ProductName"]);

Но это, конечно, не сработает. Так что любая помощь очень ценится: -)

1 Ответ

1 голос
/ 11 февраля 2012

Возможно, более чистый и простой метод заключается в использовании уникального идентификатора продукта, который является числовым или буквенно-цифровым и имеет естественную кодировку HTML, а затем просто вводит название продукта в качестве неиспользуемого параметра для целей SEO или поиска.

MSDN Метод RouteCollection.MapPageRoute (String, String, String, Boolean, RouteValueDictionary)

routes.MapPageRoute("Produkt visning", 
                "artikler/{Categoryname}/{SubCategoryname}/{ProductIdentifier}/{ProductName}", 
                "~/SingleProduct.aspx", false, new RouteValueDictionary 
    { { "ProductName ", string.Empty } }); 
...