代码之家  ›  专栏  ›  技术社区  ›  Ben Lesh

我可以用MVC路由替代传统的WebForms URL重写吗?

  •  1
  • Ben Lesh  · 技术社区  · 15 年前

    我目前正在将一个大型网站从webforms迁移到mvc。这将是一个漫长的过程,我不能马上浏览每一页并迁移它,我也不想这样做。

    我遇到的一个问题是,在旧的web应用程序中,我们正在为web表单做一些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 其中querystring被拆分并用“/”分隔。

    是否仍要使用MVC路由进行相同操作以支持我的旧页?

    我查过了,所以我 saw interesting stuff 但似乎没有什么能直接回答我的问题。如果我漏掉了什么,我很抱歉我有双重身份。 提前谢谢。

    我愿意 如果必须的话,对每条路线分别编码 . 尽管我仍然不确定我需要在那里做什么。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Nick Berardi    15 年前

    你不能替代,但你可以扩大。ASP.NET路由是ASP.NET MVC操作的一部分。但是,在定义了路由或保持路由不变之后,您可以在路由之上使用标准重写器,以提供对URL的更多控制。

    你看,路由实际上不是URL重写,它们很像 namespace 为了网络。在这种情况下,当您使用代码名称空间时,它定义了查找任何对象的位置,与ASP.NET MVC一起使用时,路由也是如此。所以当你有以下网址时 /products/shirts/1234 它直接映射到 ProductsController 打电话 Shirts(int productId) .

    在这里,与URL重写一样,您正在修改URL并将其扩充为其他内容。这与您的系统将了解的路径有关。但是,完成后,您不会像处理路由那样将修改后的URL直接映射到一段代码。你刚把绳子从say改了过来 /产品/衬衫/1234 /products/shirts.aspx?id=1234 .

    但是直接回答你的问题。在.NET 4.0之前,WebForms将不支持路由。现在有很多方法可以破解它,但是如果你迁移到.NET 4.0,你可能会遇到升级问题。