繁体   English   中英

ASP.net Web API中MVC的DefaultModelBinder的等价物是什么?

[英]What is the equivalent of MVC's DefaultModelBinder in ASP.net Web API?

我想在ASP.Net Web API中创建一个自定义模型绑定器。 有关如何从头开始执行此操作的大量资源,但我想利用现有功能。

我在codeplex中查看了源代码,可以在那里看到大量的模型绑定器,但大多数是密封的......即使这样,我也无法确定在哪种情况下使用哪一个。

这是我的api方法标题:

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

我想要做的是基本上在填充所有基本属性后拦截模型绑定器,然后根据我将在客户端设置的http请求标头设置一些额外的值。

正如我所说,我很乐意创建自定义模型绑定器和模型绑定器并将它们连接起来,我遇到问题的是试图重用现有的功能。

谢谢,皮特

看一下WebApi的扩展点。

WebApi中的MVC的DefaultModelBinder没有确切的等价物。

如果使用[FromBody]属性,则将调用FormatterParameterBinding并使用MediaTypeFormatter构建模型。

URI路径和Url(查询参数)的模型绑定器将调用ModelBinderParameterBinding ,它将传递给IValueProviderIModelBinder ......

所以...

在您的示例Field (取决于内容类型协商的结果)将使用以下之一: XmlMediaTypeFormatterJsonMediaTypeFormatterFormUrlEncodedMediaTypeFormatter 因此,您可以使用各自的设置(例如JSON.NET设置)自定义这些的序列化行为...或者实现您自己的或包装的MediaTypeFormatter。

在您的示例中, appId可能会传递给IValueProvider ...就像ElementalValueProvider

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM