模型绑定在webapi 2.0中失败

时间:2018-10-23 05:12:08

标签: asp.net-web-api2 special-characters query-string model-binding webapi2

我正在使用Webapi 2.0。我传递了一个值为vb / c4t + UuRLnQ2W / g8SQ ==的参数。模型绑定后,我在代码中获得了authId的值,为vb / c4t UuRLnQ2W / g8SQ ==(+)符号被替换为空格。你能帮我个忙吗?

网址:api / employee / 1234?authId = vb / c4t + UuRLnQ2W / g8SQ ==

[HttpGet]
public IHttpActionResult Get(string eid, string authId)
{
}

1 个答案:

答案 0 :(得分:1)

+符号在查询字符串中具有不同的含义。它用来表示一个空间。在查询字符串中另一个具有语义重要性的字符是&,用于分隔查询字符串中的各种var=value对。

大多数服务器端脚本会在使用查询参数之前对其进行解码,以便将+正确转换为空格。现在,如果您希望在查询字符串中出现文字+,则需要指定%2B

示例yourString.replace("+","%2b")

替代方法:您应URLEncode查询字符串值,以确保您不会丢失内容。

另一种替代方法是为+符号创建您自己的代码。例如12sfdhjsj8722nsn2232dfsdd将代表一个+符号。因此您可以用代码替换+号,然后在服务器端使用相同的代码将其取回。