ASP.NET URL переписывание и создание ссылок на страницы - PullRequest
0 голосов
/ 18 сентября 2008

Итак, в этом посте говорится о том, как на самом деле реализовать перезапись 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 ]

3 голосов
/ 18 сентября 2008

См. System.Web.Routing

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

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

0 голосов
/ 18 сентября 2008

Создайте класс 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);
        }
    }
}
...