Как заменить "% 2B" на "+" при вызове RedirectToAction () - PullRequest
0 голосов
/ 04 февраля 2020

Я использую метод RedirectToAction() в ASP. NET Контроллер Core 2.1, называемый CatalogController:

return RedirectToAction("search", new { search_string = "example+string" });

Это перенаправляет на URL: catalog/search/?search_string=example%2Bstring. Как заменить кодировку %2B на + вместо?

URL должен выглядеть следующим образом: catalog/search/?search_string=example+string вместо.

1 Ответ

1 голос
/ 04 февраля 2020

В методе RedirectToAction() предполагается, что любые значения, передаваемые через параметр RouteValues, имеют кодировку , а не ; метод RedirectToAction() позаботится о кодировании URL от вашего имени. Таким образом, когда вы вводите +, он обрабатывается как буквальный символ +, а не как кодированный пробел.

%2B - правильная кодировка для буквального символа +. Если вы хотите, чтобы в URL был закодирован пробел, то вам необходимо ввести пробел в свой словарь RouteValues (например, search_string = "example string"). Это закодирует пространство как %20.

Примечание: A %20 является эквивалентом + в закодированном URL, поэтому я предполагаю это удовлетворит ваши требования.

Если ваше значение search_string исходит из источника в кодировке URL, вам необходимо сначала декодировать , используя, например, WebUtility.UrlDecode() . Тем не менее, если вы извлекаете значение search_string из параметра действия или модели привязки, это декодирование уже должно быть выполнено за вас.

Если по какой-то причине вы хотите чтобы рассматривать буквенные символы + как пробелы, вам нужно явно выполнить замену исходного значения (например, search_string.Replace("+", " ")).

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