Переписывание URL-адресов ASP.NET и создание ссылок на страницы

StackOverflow https://stackoverflow.com/questions/87221

Вопрос

Итак, этот пост рассказал о том, как на самом деле реализовать перезапись URL-адресов в приложении ASP.NET, чтобы получить «дружественные URL-адреса».Это отлично работает и отлично подходит для отправки пользователя на определенную страницу, но знает ли кто-нибудь хорошее решение для создания «дружественных» URL-адресов внутри вашего кода при использовании одного из упомянутых инструментов?

Например, указание ссылки внутри элемента управления asp.net как ~/mypage.aspx?product=12 при наличии правила перезаписи будет проблемой, поскольку в этом случае вы ссылаетесь на контент двумя разными способами.

Я знаком с использованием DotNetNuke и FriendlyUrl, где есть метод «NavigateUrl», который получает дружественный код URL от переписывающего устройства, но я не нахожу примеров того, как это сделать с помощью UrlRewriting.net или других решений. там.

В идеале мне хотелось бы иметь возможность получить что-то вроде этого.

string friendlyUrl = GetFriendlyUrl("~/MyUnfriendlyPage.aspx?myid=13");

РЕДАКТИРОВАТЬ: Я ищу общее решение, а не то, что мне нужно реализовать для каждой страницы моего сайта, а потенциально что-то, что может соответствовать правилам в противоположном направлении.

Это было полезно?

Решение

Видеть Система.Web.Маршрутизация

Маршрутизация отличается от перезаписи.Реализация этого метода требует незначительных изменений на ваших страницах (а именно, необходимо будет изменить любой код, обращающийся к параметрам строки запроса), но он позволяет генерировать ссылки на основе определенных вами маршрутов.Он используется ASP.NET MVC, но может использоваться в любом приложении ASP.NET.

Маршрутизация является частью .Net 3.5 SP1.

Другие советы

Создайте класс UrlBuilder с методами для каждой страницы следующим образом:

public class UrlBuilder
{
    public static string BuildProductUrl(int id)
    {
        if (true) // replace with logic to determine if URL rewriting is enabled
        {
            return string.Format("~/Product/{0}", id);
        }
        else
        {
            return string.Format("~/product.aspx?id={0}", id);
        }
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top