Итак, этот пост рассказал о том, как на самом деле реализовать переопределение URL-адресов в приложении ASP.NET для получения «дружественных URL-адресов». Это отлично работает и отлично подходит для отправки пользователя на определенную страницу, но знает ли кто-нибудь хорошее решение для создания «дружественных» URL-адресов внутри вашего кода при использовании одного из упомянутых инструментов?
Например, указание ссылки внутри элемента управления asp.net как ~ / mypage.aspx? Product = 12 при наличии правила перезаписи будет проблемой, поскольку в этом случае вы связываете контент двумя разными способами.
Я знаком с использованием DotNetNuke и FriendlyUrl, где есть метод "NavigateUrl", который получит дружественный код URL от редактора, но я не нахожу примеров того, как это сделать с помощью UrlRewriting.net или других решений. там.
В идеале хотелось бы получить что-то подобное.
string friendlyUrl = GetFriendlyUrl("~/MyUnfriendlyPage.aspx?myid=13");
Обновлено: Я ищу универсальное решение, не то, что мне нужно реализовать для каждой страницы моего сайта, а потенциально то, что может противоречить правилам в противоположном направлении.
Брайан, мне нужно это проверить, у меня довольно хорошая фактическая обработка ссылок, это просто то, как я могу гарантировать, что я ВСЕГДА генерирую правильные ссылки из своего веб-приложения, не кодируя то же самое в каждый раз в двух местах!





Создайте класс 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);
}
}
}
Я пытаюсь найти что-то более общее, чтобы мне не приходилось поддерживать две коллекции правил перезаписи, одну внутри UrlRewriting.net и одну внутри моего кода.
Маршрутизация отличается от перезаписи. Реализация этого метода требует незначительных изменений на ваших страницах (а именно, необходимо будет изменить любой код, обращающийся к параметрам строки запроса), но он позволяет вам создавать ссылки на основе определенных вами маршрутов. Он используется ASP.NET MVC, но может использоваться в любом приложении ASP.NET.
Маршрутизация является частью .Net 3.5 SP1
Хороший вопрос - сейчас это горячая тема для меня. Кстати, в блоге ScottGu есть некоторые подробности о новом материале для перезаписи URL в .NET.