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