我想了解为什么在POST正文中只有一个参数的情况下,对于内容类型url-formencoded,语法与多个参数的情况不同。
假设我们有两个匹配路由模板的方法:
public string PostSingleString([FromBody]string value)
{
return value;
}
public class Values
{
public string Value1 {get; set;}
public string Value2 {get; set;}
}
public string PostMultipleStrings(Values values)
{
return String.Format("{0}-{1}", values.Value1, values.Value2);
}
在第一种情况下,请求将是:
POST [controller]/
body: =myValue
在第二个:但是:
POST [controller]/
body: Value1=one&Value2=two
如果在第一种情况下使用了第二个示例中的语法(value=myValue
),则param将不会绑定(除非字符串包含在复杂类型中)。
任何人都可以解释为什么会这样吗?