什么是MVC的DefaultModelBinder在ASP.net网页API相当于?(What is

2019-08-16 18:45发布

我想创建一个在ASP.Net的Web API自定义模型粘合剂。 有丰富的资源如何从头做到这一点,但我想利用现有的功能。

我已经在源左顾右盼CodePlex上,可以看到大量modelbinders在那里,但大部分是密封的......即使如此,我不能工作了哪一个会在哪些情况下可以使用。

这里是我的API方法头部:

public async Task<HttpResponseMessage> Post(long appId, [FromBody]Field field)

我想要做的基本上都是拦截模型绑定器已填充后,所有的基本属性,然后设置基础上,我会在客户端进行设置HTTP请求头一些额外的价值。

正如我所说的,我很舒服创建定制modelbinders和modelbinderproviders和它们连接,我有一个问题位正试图重新使用所提供的现有功能。

谢谢,皮特

Answer 1:

看看这里的扩展点的WebAPI 。

没有为MVC的不完全等效DefaultModelBinder中的WebAPI。

如果您使用的是[FromBody]属性则FormatterParameterBinding将被调用和MediaTypeFormatter将用于构建模型。

对于URI路径和地址(查询参数)的模型粘合剂将调用ModelBinderParameterBinding这将传递到任何一个IValueProviderIModelBinder ...

所以...

在你的榜样Field (根据内容类型协商的结果)将使用其中的一个: XmlMediaTypeFormatterJsonMediaTypeFormatterFormUrlEncodedMediaTypeFormatter 。 因此,由你来定义的这些序列化行为使用各自的设置如JSON.NET设置...或实现自己的或缠绕MediaTypeFormatter。

在您的示例appId可能会被转嫁到IValueProvider ...像ElementalValueProvider 。



文章来源: What is the equivalent of MVC's DefaultModelBinder in ASP.net Web API?