小写URL而不影响参数

时间:2013-06-21 20:30:30

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我目前正在使用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?

1 个答案:

答案 0 :(得分:11)

我之前遇到过这种情况。我最终做的是获得AttributeRouting

他们有一个甜蜜的功能(上面已链接)到 PreserveCaseForUrlParameters

另一种选择是使用LowercaseRoutesMVC。在这种情况下,您可以将某些路线设为小写,而您想要单独留下的路线则可以事先使用routes.MapRoute。但是,这可能会变得混乱,因为特殊配置的那些将是小写的,而默认值的整个路径都不是。

希望这有帮助!