В методе 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("+", " ")
).