URL нижнего регистра без изменения параметров

В настоящее время я использую маршрутизацию 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 })

Параметр id в URL-адресе преобразуется в нижний регистр, что приводит к ошибке при попытке расшифровки строки.

Можно ли настроить маршрутизацию на нижние URL-адреса, игнорируя параметры URL?

Ответ 1

Я столкнулся с этим раньше. То, что я закончил, заключалось в получении AttributeRouting.

У них есть сладкая функция (связанная выше) с PreserveCaseForUrlParameters.

Другой вариант - использовать LowercaseRoutesMVC. В этом случае вы должны сделать определенные маршруты в нижнем регистре и те, которые вы хотите оставить в покое, вы можете просто использовать routes.MapRoute заранее. Однако это может стать беспорядочным, поскольку специально сконфигурированные будут иметь строчный регистр, где весь маршрут по умолчанию не будет.

Надеюсь, это поможет!