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

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

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

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

В идеале я бы хотел получить что-то подобное.

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

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

2 ответа

Решение

См. System.Web.Routing

Маршрутизация отличается от переписывания. Реализация этого метода требует незначительных изменений на ваших страницах (а именно, любой код, обращающийся к параметрам строки запроса, должен быть изменен), но он позволяет вам генерировать ссылки на основе определенных вами маршрутов. Он используется 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);
        }
    }
}
Другие вопросы по тегам