非常简单的问题,可能不是那么简单的答案。发布 JSON。
public void Post(Model1 model1, Model2 model2)
{}
已填充 model1,但未填充 model2(空)。
public void Post(Model2 model2, Model1 model1)
{}
现在,模型 2 已填充,但模型 1 未填充(空)。
为什么?
编辑
两个参数的原因? Model2 曾经是从 Model1 引用的,但这不起作用。就在那时我把他们分开了。
编辑
对。感谢 marcind 对上述问题的回答。现在由于原始设置不起作用的原因。我不再是形式宇宙了。我发布了杰森。如果模型中有子对象,则将子对象发布到 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"}}
最佳答案
不确定您使用的是哪个版本,但我们确定的一般规则是,在绑定(bind)复杂类型时,Web API 会将请求的整个正文视为表示单个实体,从而表示单个操作参数。在您的情况下,如果您想绑定(bind)多个 Model
,您可以引入自定义绑定(bind)对象,或者您可以绑定(bind)到 Model[]
或其他一些集合类型。
关于asp.net-mvc-4 - WebAPI仅绑定(bind)第一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10838126/