代码之家  ›  专栏  ›  技术社区  ›  DaveDev

当我只对第三个参数感兴趣时,如何定义一个匹配3个参数的路由?

  •  2
  • DaveDev  · 技术社区  · 15 年前

    我正在尝试指定一个路由配置,该配置将允许类似于以下内容的url:

    /{any sequence of characters}/{any sequence of characters}/{mexid}
    

    我们目前正在重新设计一个旧系统,它使用以前格式的url。我们的新系统必须捕获这些请求并将它们重定向到新的URL,但前提是有3个URL参数。这只是我感兴趣的第三个参数。

    这是我正在使用的路由映射:

    routes.MapRoute(
        null,
        "{param1}/{param2}/{mexid}",
        new { controller = "ShareClass", action = "FundFactsheet", mexid = "" }
    );
    

    我所面临的问题是,这是对任何无效请求的一种捕获,在这里我只感兴趣这是URL中带有MyMID的路由。

    如何定义仅适用于包含3个参数的URL的路由,前提是该URL尚未与我更明确定义的另一个路由匹配?

    2 回复  |  直到 15 年前
        1
  •  1
  •   ensecoz    15 年前

    您可能想添加路由约束(我还没有测试它,但我认为它应该回答您的问题)

    routes.MapRoute(
        null,
        "{param1}/{param2}/{mexid}",
        new { controller = "ShareClass", action = "FundFactsheet" },
        new { param1 = @".+", param2 = @".+", mexid = @".+" }
    );
    
        2
  •  0
  •   Dismissile    15 年前

    你能删除MeMID的默认值吗?

    你现在有路线,如果你不指定MexID,那么它将使用“”作为默认值。

    如果param1和param2没有任何唯一性,那么它可能总是优先于默认路由。