调用RedirectToAction()时如何用“ +”替换“%2B”

问题描述 投票:0回答:1

我在称为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

asp.net-core redirect asp.net-core-2.1
1个回答
0
投票

RedirectToAction()方法假定通过RouteValues参数传递的所有值均被not编码; RedirectToAction()方法将代表您处理URL编码。因此,当您输入+时,会将其视为文字+符号,而不是编码的空格。

%2B是文字+符号的正确编码。如果要在URL中编码空格,则应在RouteValues词典中输入一个空格(例如search_string = "example string")。这会将空格编码为%20

注意: %20等同于编码URL中的+,因此,我认为这将满足您的要求。

如果您的search_string值来自URL编码的来源,则需要首先使用例如< WebUtility.UrlDecode()。也就是说,如果您要从操作参数或绑定模型中检索WebUtility.UrlDecode()值,则应该已经为您完成了此解码。如果出于某种原因,您

想要

将文字search_string符号视为空格,则需要对源值(例如+)进行显式替换。

© www.soinside.com 2019 - 2024. All rights reserved.