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

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

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

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

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

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

Обновлено: Я ищу универсальное решение, не то, что мне нужно реализовать для каждой страницы моего сайта, а потенциально то, что может противоречить правилам в противоположном направлении.

Хороший вопрос - сейчас это горячая тема для меня. Кстати, в блоге ScottGu есть некоторые подробности о новом материале для перезаписи URL в .NET.

Brian MacKay 19.09.2008 20:26

Брайан, мне нужно это проверить, у меня довольно хорошая фактическая обработка ссылок, это просто то, как я могу гарантировать, что я ВСЕГДА генерирую правильные ссылки из своего веб-приложения, не кодируя то же самое в каждый раз в двух местах!

Mitchel Sellers 19.09.2008 20:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
654
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Создайте класс 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 и одну внутри моего кода.

Mitchel Sellers 18.09.2008 00:35
Ответ принят как подходящий

См. System.Web.Routing

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

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

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