Можно ли сохранить URL при перенаправлении на классическую страницу asp с контроллера? - PullRequest
2 голосов
/ 20 апреля 2010

При переносе сайта из классического asp в MVC у меня возникает проблема, что не все контроллеры реализованы. Для тех, кто не реализован, я бы хотел использовать классическую страницу asp (скажем, /product.asp?id=123), сохраняя при этом красивый URL / product / 123. Для этого я реализовал фиктивный ProductController, который возвращает RedirectResult классическому URL-адресу asp. Но это меняет URL в навигационной панели браузера. Требование состоит в том, что URL-адреса всегда должны быть чистыми (mvc), даже если страница еще не полностью перенесена.

Если это невозможно сделать с помощью фиктивного контроллера, каков альтернативный вариант решения этой проблемы?

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 20 апреля 2010

Я могу придумать два способа сделать это:

  1. В контроллере продукта выполните страницу product.asp?id=123 и верните HTML, используя Return Content(..)
  2. Добавьте фиктивный продукт просмотра и оттуда прочитайте product.asp?id=123 через Ajax и замените HTML

Но оба громоздки и могут не работать, если вам нужно post со страницы

Вы также можете использовать URL Rewriter , который не меняет URL браузера (я никогда не использовал его, поэтому не могу рекомендовать)

Моя рекомендация - придерживаться старого URL до тех пор, пока вы не перенесете его в MVC, а затем выполнить перенаправление со старого URL на новый в global.asax

0 голосов
/ 20 апреля 2010

Вероятно, самым простым решением было бы использовать Server.Transfer , который в отличие от Response.Redirect оставляет запрошенный URL-адрес как есть.

Я исправлен: сервер действительно невозможен. Переход со страницы .aspx на страницу .asp.


Однако возможно использование Server.TransferRequest , но для этого требуется IIS7 с интегрированным режимом конвейера.

Страница-заполнитель ASP.NET

<% Server.TransferRequest("Index.asp", true); %>

Целевая страница ASP

<%@ language="vbscript" %>
<% Response.Write(Request.QueryString("msg")) %>

Использование

http://yoursite/Index.aspx?msg=Hello%20World!
...