请原谅令人困惑的标题;)
我们已经构建了一个ASP.NET MVC应用程序来替换我们的“旧”ASP.NET webforms怪物。我们仍然希望支持那里使用的一些旧网址,因为这些网址可能仍然存在于某个地方的电子邮件等中。
例如:我们的旧系统使用URL~ / Password.aspx,新MVC系统中的URL为〜/ Home / Password。
为了支持这些旧网址,我们只是将它们添加到路由表中,例如
routes.MapRoute(
"Password",
"Password.aspx",
new {
controller = "Home",
action = "Password",
id = ""
}
);
这很好用,但每当我们在代码中使用Url.Action(“密码”,“主页”)时,它会生成旧的URL(“〜/ Password.aspx”而不是“〜/ Home / Password”) 。由于我们想要慢慢淘汰旧的URL,如果MVC路由仍“理解”旧URL但只使用/写入新URL,那将是很好的。
有没有办法实现这个目标?
答案 0 :(得分:5)
将新路由放在路由表上的旧路由之上。路线越高,它的优先级就越高:
routes.MapRoute(
"PasswordNew",
"Home/Password",
new {controller = "Home",
action = "Password",
id = ""
}
);
routes.MapRoute(
"Password",
"Password.aspx",
new {
controller = "Home",
action = "Password",
id = ""
}
);