我正在尝试指定允许类似于以下网址的路由配置:
/{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个参数的网址的路由,前提是该网址尚未与我更具体定义的其他路由匹配?
答案 0 :(得分:1)
你可能想要添加路由约束(我还没有测试过,但我认为它应该回答你的问题)
routes.MapRoute(
null,
"{param1}/{param2}/{mexid}",
new { controller = "ShareClass", action = "FundFactsheet" },
new { param1 = @".+", param2 = @".+", mexid = @".+" }
);
答案 1 :(得分:0)
你能删除mexid的默认值吗?
您现在拥有路线的方式,如果您没有指定mexid,那么它将使用“”作为默认值。
如果你没有关于param1和param2的任何独特信息,那么它可能总是优先于默认路由。