小写URL而不影响参数

Mer*_*ovi 13 asp.net-mvc asp.net-mvc-routing asp.net-mvc-4

我目前正在使用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
            });
Run Code Online (Sandbox Code Playgroud)

但是在一组特定的操作中,我有一个id加密且区分大小写的字符串参数.

然后,当我尝试生成这样的动作链接时:

@Html.ActionLink("My Text", "Action", "Controller", new { id = encryptedString })
Run Code Online (Sandbox Code Playgroud)

idURL中的参数将转换为小写,从而在尝试解密字符串时导致错误.

是否可以将路由配置为忽略URL参数的小写URL?

tec*_*osh 11

我以前碰到过这个.我最终做的是获得AttributeRouting.

它们具有PreserveCaseForUrlParameters的甜特性(上面链接).

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

希望这可以帮助!