调用 RedirectToAction() 时如何用“+”替换“%2B”
How to replace "%2B" with "+" when calling RedirectToAction()
我在名为 CatalogController
:
的 ASP.NET Core 2.1 控制器中使用 RedirectToAction()
方法
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
参数传递的任何值都是 未 编码的; RedirectToAction()
方法将代表您处理 URL 编码。因此,当您输入 +
时,它会将其视为文字 +
符号,而不是编码的 space.
%2B
是文字 +
符号的正确编码。如果你想在 URL 中编码一个 space,那么你应该在你的 RouteValues
字典中输入一个 space(例如,search_string = "example string"
)。这会将 space 编码为 %20
.
Note: A %20
is the equivalent of a +
in an encoded URL, so I'm assuming that will satisfy your requirements.
如果您的 search_string
值来自 URL 编码源,您将需要首先 解码 它使用例如。也就是说,如果您要从操作参数或绑定模型中检索 search_string
值,则此解码应该已经为您完成。
如果出于某种原因,您想要将文字 +
符号视为 space,您将需要明确地执行该替换您的源值(例如,search_string.Replace("+", " ")
)。
我在名为 CatalogController
:
RedirectToAction()
方法
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
参数传递的任何值都是 未 编码的; RedirectToAction()
方法将代表您处理 URL 编码。因此,当您输入 +
时,它会将其视为文字 +
符号,而不是编码的 space.
%2B
是文字 +
符号的正确编码。如果你想在 URL 中编码一个 space,那么你应该在你的 RouteValues
字典中输入一个 space(例如,search_string = "example string"
)。这会将 space 编码为 %20
.
Note: A
%20
is the equivalent of a+
in an encoded URL, so I'm assuming that will satisfy your requirements.
如果您的 search_string
值来自 URL 编码源,您将需要首先 解码 它使用例如search_string
值,则此解码应该已经为您完成。
如果出于某种原因,您想要将文字 +
符号视为 space,您将需要明确地执行该替换您的源值(例如,search_string.Replace("+", " ")
)。