我正在开发一个将 aspx 网站重写为 MVC3 的项目。我想让旧网址在新网站上工作。我已经命名了我的控制器和操作,以便 URL 实际上在查询字符串中包含足够的信息以正确路由,但我无法让路由正常工作,因为它不喜欢 ? 在网址中。
基本上我有这样的旧网址:
www.example.com/Something/SomethingElse/MyPage.aspx?Section=DetailSection&TaskId=abcdef
我尝试使用以下方法创建路线:
routes.MapRoute(
"OldSite",
"Something/SomethingElse/MyPage.aspx?Section={action}Section&Id={id}",
new { controller = "Task", action = "Index", id = UrlParameter.Optional }
);
我希望它路由到正确的新 URL,即:
www.example.com/Task/Detail/abcdef
我知道 MyPage.aspx 页面的所有流量都应该流向我的新任务控制器,并且 Section 参数的开头始终与该控制器上的几个相应操作之一匹配。
不幸的是,我发现我收到一条路线不能包含问号的错误。我该如何处理?使用 URL 重写会更好吗?因为这是一个私人网站,所以我不关心返回永久重定向或任何东西 - 无论如何,没有搜索引擎会链接到该网站。我只是想确保在旧电子邮件中有 URL 的客户能够访问新站点中的正确页面。