我想创建一个在ASP.Net的Web API自定义模型粘合剂。 有丰富的资源如何从头做到这一点,但我想利用现有的功能。
我已经在源左顾右盼CodePlex上,可以看到大量modelbinders在那里,但大部分是密封的......即使如此,我不能工作了哪一个会在哪些情况下可以使用。
这里是我的API方法头部:
public async Task<HttpResponseMessage> Post(long appId, [FromBody]Field field)
我想要做的基本上都是拦截模型绑定器已填充后,所有的基本属性,然后设置基础上,我会在客户端进行设置HTTP请求头一些额外的价值。
正如我所说的,我很舒服创建定制modelbinders和modelbinderproviders和它们连接,我有一个问题位正试图重新使用所提供的现有功能。
谢谢,皮特
看看这里的扩展点的WebAPI 。
没有为MVC的不完全等效DefaultModelBinder
中的WebAPI。
如果您使用的是[FromBody]
属性则FormatterParameterBinding
将被调用和MediaTypeFormatter
将用于构建模型。
对于URI路径和地址(查询参数)的模型粘合剂将调用ModelBinderParameterBinding
这将传递到任何一个IValueProvider
或IModelBinder
...
所以...
在你的榜样Field
(根据内容类型协商的结果)将使用其中的一个: XmlMediaTypeFormatter
, JsonMediaTypeFormatter
或FormUrlEncodedMediaTypeFormatter
。 因此,由你来定义的这些序列化行为使用各自的设置如JSON.NET设置...或实现自己的或缠绕MediaTypeFormatter。
在您的示例appId
可能会被转嫁到IValueProvider
...像ElementalValueProvider 。