在将站点从经典的asp迁移到MVC时,我遇到的问题是并非所有控制器都已实现。对于那些没有实现的,我想提供经典的asp页面(比如/product.asp?id=123),同时保持好的url / product / 123。为了实现这一点,我实现了一个虚拟的ProductController,它将RedirectResult返回给经典的asp url。但这会更改浏览器导航栏中的网址。要求有,网页应该始终是干净的(mvc),尽管页面尚未完全迁移。
如果使用虚拟控制器无法做到这一点,那么解决此问题的另一种选择是什么?
提前致谢!
答案 0 :(得分:3)
我可以想到两种方法:
product.asp?id=123
页面并使用Return Content(..)
product.asp?id=123
并替换HTML 但两者都很麻烦,如果您需要从页面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!