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
заранее. Однако это может стать беспорядочным, поскольку специально сконфигурированные будут иметь строчный регистр, где весь маршрут по умолчанию не будет.
Надеюсь, это поможет!