是否可以在从控制器重定向到经典asp页面的同时维护URL?

时间:2010-04-20 08:05:24

标签: asp.net-mvc redirect asp-classic routing

在将站点从经典的asp迁移到MVC时,我遇到的问题是并非所有控制器都已实现。对于那些没有实现的,我想提供经典的asp页面(比如/product.asp?id=123),同时保持好的url / product / 123。为了实现这一点,我实现了一个虚拟的ProductController,它将RedirectResult返回给经典的asp url。但这会更改浏览器导航栏中的网址。要求有,网页应该始终是干净的(mvc),尽管页面尚未完全迁移。

如果使用虚拟控制器无法做到这一点,那么解决此问题的另一种选择是什么?

提前致谢!

2 个答案:

答案 0 :(得分:3)

我可以想到两种方法:

  1. 在产品控制器中,执行product.asp?id=123页面并使用Return Content(..)
  2. 返回HTML
  3. 添加虚拟视图产品,然后从那里通过Ajax阅读product.asp?id=123并替换HTML
  4. 但两者都很麻烦,如果您需要从页面post

    ,则可能无效

    您还可以使用不会更改浏览器网址的URL Rewriter(我从未使用过,因此无法推荐)

    我的建议是坚持使用旧网址,只要您不将它们迁移到MVC,然后执行从旧网址重定向到global.asax中的新网址

答案 1 :(得分:0)

可能最简单的解决方案是使用 Server.Transfer ,与 Response.Redirect 形成对比,保留所请求的URL。

我更正了:Server.Transfer确实无法从.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!