我目前正在使用ASP.NET MVC 4路由,LowercaseUrls
选项设置为true
,并且它运行良好。我正在使用此配置:
routes.LowercaseUrls = true;
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
controller = "Inicio",
action = "Index",
id = UrlParameter.Optional
});
但是在一组特定的操作中,我有一个加密且区分大小写的字符串id
参数。
然后,当我尝试生成这样的动作链接时:
@Html.ActionLink("My Text", "Action", "Controller", new { id = encryptedString })
URL中的id
参数会转换为小写,从而导致在尝试解密字符串时出错。
是否可以将路由配置为忽略URL参数的小写URL?
答案 0 :(得分:11)
我之前遇到过这种情况。我最终做的是获得AttributeRouting。
他们有一个甜蜜的功能(上面已链接)到 PreserveCaseForUrlParameters 。
另一种选择是使用LowercaseRoutesMVC。在这种情况下,您可以将某些路线设为小写,而您想要单独留下的路线则可以事先使用routes.MapRoute
。但是,这可能会变得混乱,因为特殊配置的那些将是小写的,而默认值的整个路径都不是。
希望这有帮助!