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

时间:2010-11-15 14:19:53

标签: c# asp.net-mvc routing

我正在尝试指定允许类似于以下网址的路由配置:

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

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

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

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

我遇到的问题是,对于任何无效的请求来说,这都是一种无所不在的问题,我只感兴趣,因为这是其中带有mexid的URL的路径。

如何定义仅适用于包含3个参数的网址的路由,前提是该网址尚未与我更具体定​​义的其他路由匹配?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

你能删除mexid的默认值吗?

您现在拥有路线的方式,如果您没有指定mexid,那么它将使用“”作为默认值。

如果你没有关于param1和param2的任何独特信息,那么它可能总是优先于默认路由。