Как прочитать параметры QueryString из URL, который будет переписан, и скрыть эти параметры в новом переписанном URL - PullRequest
0 голосов
/ 03 января 2011

У меня есть два примера, чтобы показать вам, чего я хочу достичь здесь. Но чтобы указать, что отличается в моем вопросе, это то, что у меня есть параметризованные URL-адреса, и я хочу реализовать перезапись URL-адресов для моего приложения. Но я не хочу конвертировать параметр в URL, который будет помещен между слешами ... "page.aspx? Number = one" в "pages / one /" << NOT! </p>

Первый пример:

http://localhost:1820/Pages/Default.aspx?page=2&start=5

К

http://localhost:1820/Pages/page2

Второй пример:

http://localhost:1820/Items/Details.aspx?item=3

К

http://localhost:1820/Items/ItemName

Но мне все равно понадобятся все параметры в исходных URL

Ответы [ 2 ]

1 голос
/ 03 января 2011

В ваших примерах вы полностью удаляете данные из URL, и я не вижу, чтобы здесь был какой-то способ делать то, что вы хотите.

Например, ваш первый URL с /default.aspx?page=2&start=5, которым вы хотите стать /pages/page2.

Теоретически, default.aspx? Page = 2 и default.aspx? Page = 2 & start = 5 могут отличаться. Как бы вы хотели представить это. Поскольку у вас не было бы способа вызвать первое, если / pages / page2 всегда сопоставляется с таковым во втором примере.

Полагаю, нам нужно было бы узнать немного больше о том, чего вы пытаетесь достичь.

0 голосов
/ 03 января 2011

Короче говоря, вам нужно каким-то образом сохранить связь между переписанными значениями параметров строки запроса и перезаписанными значениями параметров URL.

Например, если вы переписываете:

http://localhost:1820/Items/Details.aspx?item=3

Кому:

http://localhost:1820/Items/Widgets

Вы должны где-то хранить этот элемент 3, и виджеты являются синонимами. Скорее всего, вы уже делаете это. Я думаю, в вашей базе данных у вас есть таблица Products (или что-то еще) с ProductID и ProductName столбцами, и есть запись с ProductID=3 и ProductName=Widgets.

Я бы предложил использовать маршрутизацию ASP.NET для обработки перезаписи URL. Короче говоря, вы должны определить правило маршрутизации, например Items/{ProductName}, и сопоставить его со страницей ASP.NET ~/Items/Details.aspx. Такое правило маршрутизации гласит: «Всякий раз, когда URL входит в форму Items / независимо от , запустите страницу ~/Items/Details.aspx». На странице ~/Items/Details.aspx вы можете программно определить значение ProductName в URL-адресе (то есть вы можете определить, что пользователь посещает элементы / виджеты, в этом примере) и из которого вы можете загрузить / отобразить соответствующая информация.

Ознакомьтесь с этой моей статьей - Маршрутизация URL-адресов в ASP.NET 4 . В нем показано, как использовать перезапись URL во многом так, как вы запрашиваете, с помощью ASP.NET Routing (встроенная библиотека в ASP.NET 3.5 SP1 и выше). Вы также можете загрузить рабочий образец приложения, демонстрирующий методы, описанные в статье.

Счастливого программирования!

...