【发布时间】:2015-02-27 19:55:24
【问题描述】:
我只想绑定 WebAPI 控制器模型的指定属性,并跳过所有其他属性到 DefaultModelBinder。
例如我有json,应该传递给WebAPI控制器:
{
prop1: 1,
prop2: "b",
prop3: "c",
currentTime: "Fri Feb 27 2015",
references:
[
{ name: "Name 1", type: "Info" },
{ name: "Name 2", type: "Warn" }
]
}
在服务器端有一个带有以下签名的HttpPost 操作:
[HttpPost]
public void SaveObject(ReferenceModel model)
{
...
}
ReferenceModel 在哪里:
public class ReferenceModel
{
public int Prop1 {get; set;}
public string Prop2 {get; set;}
public string Prop3 {get; set;}
public DateTime CurrentTime {get; set;}
public List<BaseReferenceItem> References {get; set;}
}
我需要自定义绑定References 属性,因为我想在运行时通过派生类型的对象初始化这个属性。
例如,如果我将获得值为1 的Prop1,那么我需要通过DerivedReferenceType1 类型的对象来初始化这个集合:
Model.References = new List<BaseReferenceItem>()
{
new DerivedReferenceType1(){...},
new DerivedReferenceType1(){...}
}
如果我将得到 Prop1 的值 2 - 类型为 DerivedReferenceType2 等等。
我在ModelBinder 中找到了潜在的解决方案,但我不想绑定模型上的所有属性。
我知道它可以很容易地在 MVC 模型绑定器中通过调用来实现
base.BindModel(controllerContext, bindingContext);
但是如何在 WebAPI 中做到这一点?
谢谢!
【问题讨论】:
标签: asp.net .net c#-4.0 asp.net-web-api