2

死简单的问题,可能不是那么简单的答案。发布 JSON。

public void Post(Model1 model1, Model2 model2)
{}

已填充模型 1,但未填充模型 2(空)。

public void Post(Model2 model2, Model1 model1)
{}

现在,模型 2 已填充,但未填充模型 1(空)。

为什么?

编辑

两个参数的原因?Model2 曾经是从 Model1 中引用的,但这不起作用。那是我把它们分开的时候。

编辑

对。感谢 marcind 对上述问题的回答。现在由于原始设置不起作用的原因。我不再是形式宇宙了。我发布Json。如果您的模型中有子对象,则在您的 json 中发布子对象。

给定

class ProductEditModel {
      public string Name {get; set;}
}

class UserEditModel {
      public string User {get; set;}
      public ProductEditModel Product {get; set;}
}

以下

{"user": "philip", "product.name": "barbie"}

不会工作。如果您在 js 中尝试设置语义等效项,您甚至会收到错误

{user: "philip", product.name: "barbie"}

以下都不起作用,我不知道他们为什么会这样做:

{"user": "philip", "productname": "barbie"}


{"user": "philip", "product_name": "barbie"}

什么有效,什么应该是显而易见的,我的职业是

{"user": "philip", "product": {"name": "barbie"}}

请踢我。

谨防!鉴于对上述模型的相应编辑,以下内容将不起作用。

{"user": "philip", "ProductEditModel": {"name": "barbie"}}
4

1 回答 1

2

不确定您使用的是哪个版本,但我们确定的一般规则是,当绑定复杂类型时,Web API 将请求的整个主体视为表示单个实体,从而表示单个操作参数。在您的情况下,如果您想绑定多个Models ,您可以引入自定义绑定对象,或者您可以绑定到一个Model[]或其他一些集合类型。

于 2012-05-31T22:04:01.213 回答