我在称为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
。
RedirectToAction()
方法假定通过RouteValues
参数传递的所有值均被not编码; RedirectToAction()
方法将代表您处理URL编码。因此,当您输入+
时,会将其视为文字+
符号,而不是编码的空格。
%2B
是文字+
符号的正确编码。如果要在URL中编码空格,则应在RouteValues
词典中输入一个空格(例如search_string = "example string"
)。这会将空格编码为%20
。
注意:
%20
等同于编码URL中的+
,因此,我认为这将满足您的要求。
如果您的 想要search_string
值来自URL编码的来源,则需要首先使用例如< WebUtility.UrlDecode()
。也就是说,如果您要从操作参数或绑定模型中检索WebUtility.UrlDecode()
值,则应该已经为您完成了此解码。如果出于某种原因,您search_string
符号视为空格,则需要对源值(例如+
)进行显式替换。