为什么ASP.NET Core中的Dictionary参数似乎表现出令人惊讶和不一致的行为?

时间:2018-05-22 05:08:04

标签: asp.net-core query-string model-binding

因此,似乎ASP.NET Core在字典上的参数绑定方面有一些令人惊讶的行为。

例如:

IActionResult Get(string str_param, Dictionary<string,string> dic_param)

工作,它不会做你所期望的......呃......有时候。

如何绑定:

?str_param=value&dic_param[foo]=bar&dic_param[bar]=baz

正如你所希望的那样!

str_param=value
dic_param={foo, bar} {bar, baz}

但是,当您省略显式的dic_param查询参数时会发生什么?

?str_param=value

你期待

str_param=value
metadata={}

猜猜你得到了什么?

str_param=value
dic_param={str_param, value}

我也很想把它映射出来:

?str_param=value&foo=bar&bar=baz

str_param=value
dic_param={foo, bar} {bar, baz}

然而,我得到同样惊人的

str_param=value
dic_param= {str_param, value} {foo, bar} {bar, baz}

有这种疯狂的理由吗?

0 个答案:

没有答案