代码之家  ›  专栏  ›  技术社区  ›  Jere.Jones

如何在ASP.NET MVC中路由旧式URL

  •  1
  • Jere.Jones  · 技术社区  · 16 年前

    由于我无法控制的因素,我需要处理这样的URL:

    我想将它们路由到一个特定的控制器/操作,VAL已经被解析和绑定(即操作的参数)。

    理想情况下,我的行动如下:

    ActionResult BackwardCompatibleAction(int val)
    

    我发现这个问题: ASP.Net MVC routing legacy URLs passing querystring Ids to controller actions 但是重定向是不可接受的。

    我尝试过解析查询字符串部分的路由,但是任何带有问号的路由都是无效的。

    我可以通过以下方式发送请求:

    routes.MapRoute(
        "dosomething.asp Backward compatibility",
        "{dosomething}.asp",
        new { controller = "MyController", action = "BackwardCompatibleAction"}
    );
    

    但是,从那里获得val=值的唯一方法是?通过request.querystring。虽然我可以在控制器内部解析查询字符串,但这会使测试操作更加困难,我不希望有这种依赖性。

    我觉得这条路线有点问题,但我不知道它是什么。任何帮助都将不胜感激。

    1 回复  |  直到 16 年前
        1
  •  3
  •   CoderDennis    16 年前

    val BackwardCompatibleAction

    routes.MapRoute(
        "dosomething.asp Backward compatibility",
        "dosomething.asp",
        new { controller = "MyController", action = "BackwardCompatibleAction"}
    );
    

    routes.MapRoute(
        "dosomething.asp Backward compatibility",
        "{action}.asp",
        new { controller = "MyController" }
    );
    

    http://www.bob.com/dosomething.asp?val=42 MyController.dosomething(int val)

    http://www.bob.com/dosomethingelse.asp?val=42 MyController.dosomethingelse(int val)

    推荐文章