Маршрутизация: прямая косая черта по-прежнему кодируется при использовании синтаксиса параметра «поймать все» с двойной звездочкой (**) - PullRequest
1 голос
/ 03 июля 2019

Я хотел бы использовать параметр url с косой чертой в нем (для лучшего вида url).

Я настроил маршрутизацию, как показано в Документах MS с двойной звездочкой:

mvcRoutes.MapRoute(
    name: "processRequest",
    template: "{lang}/{**path}",    
    defaults: new { controller = "DisplayContent", action = "ProcessRequest", lang = "en" });

Маршрут выбран, и параметры правильно передаются в действие, если я ввожу URL, например, www.example.com/en/s/link. Проблема возникает, когда я пытаюсь создать ссылки на основе этого маршрута.

Url.RouteUrl("processRequest", new { lang = 'en', path = "s/link" })

дает

/ ен / s% 2flink

То же самое происходит, когда я использую помощник тега привязки в бритве.

<!-- GetQueryParameters is a method that returns query parameters as Dictionary<string, string> -->
<a asp-route="processRequest" asp-all-route-data="@ViewContext.GetQueryParameters()">Test</a>
<a asp-route="processRequest" asp-route-lang="en" asp-route-path="s/link">Test</a>

Оба эти набора имеют значение

/ о / s% 2flink .

Можно ли сгенерировать эти ссылки, используя помощники, или мне нужно согласиться с созданием вручную строки и настройкой href без использования помощников тегов?

1 Ответ

0 голосов
/ 05 июля 2019

Похоже, у меня все получилось. Изменено так много вещей (несколько путей маршрутизации, вызовы вспомогательных тегов привязки). Но одно могу сказать наверняка, что ломает это удаление совместимости версии.

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2)

В какой-то момент я удалил это, но после добавления обратно ссылки создаются как я хочу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...