我目前正在将一个大型网站从WebForms迁移到MVC。这将是一个漫长的过程,我不能浏览每一页并立即迁移它,也不是我想要的。
我遇到的一个问题是,在旧的Web应用程序中,我们正在为WebForms做一些URL重写,如下所示:
from: http://sample.com/id/123/name/Something/Page.aspx
to: http://sample.com/Page.aspx?id=123&name=Something
基本上是:http://sample.com/[QueryString]/Page.aspx
其中查询字符串被分解并由“/".
无论如何都要使用MVC路由来支持我的遗留页面吗?
我已经检查过我和saw interesting stuff,但似乎并没有直接回答我的问题。如果我错过了什么,我很抱歉双重帖子。 提前谢谢。
如果必须,我愿意单独编码每条路线。虽然我仍然不确定我需要做什么。
答案 0 :(得分:2)
你不能替代,但你可以增加。 ASP.NET路由是ASP.NET MVC操作的一部分。但是,在您定义路线或保持路线相同之后,您可以在它们之上使用标准重写器,以便更好地控制您的路线。
您看到路由实际上不是URL重写它们很像网络的namespace
。当您使用代码名称空间时,它定义了查找任何对象的位置,与ASP.NET MVC一起使用时,路由也是如此。因此,当您拥有以下网址/products/shirts/1234
时,它会直接映射到名为ProductsController
的{{1}}中的方法。
与URL重写一样,您正在修改URL并将其扩展为其他内容。这与您的系统将理解的路径有关。但是,当您完成后,您不会像修改路径那样将修改后的URL直接映射到一段代码。您刚刚将字符串从Shirts(int productId)
更改为/products/shirts/1234
。
但要直接回答你的问题。 WebForms在.NET 4.0之前不支持路由。现在有办法破解它,但如果你转移到.NET 4.0,你可能会遇到麻烦升级