我想了解为什么在 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
),则参数不会绑定(除非字符串包装在复杂类型中)。
谁能解释为什么会这样?