bey*_*ode 21 c# rest model-binding asp.net-web-api
我想在ASP.Net Web API中创建一个自定义模型绑定器.有关如何从头开始执行此操作的大量资源,但我想利用现有功能.
我在codeplex中查看了源代码,可以在那里看到大量的模型绑定器,但大多数是密封的......即使这样,我也无法确定在哪种情况下使用哪一个.
这是我的api方法标题:
public async Task<HttpResponseMessage> Post(long appId, [FromBody]Field field)
Run Code Online (Sandbox Code Playgroud)
我想要做的是基本上在填充所有基本属性后拦截模型绑定器,然后根据我将在客户端设置的http请求标头设置一些额外的值.
正如我所说,我很乐意创建自定义模型绑定器和模型绑定器并将它们连接起来,我遇到问题的是试图重用现有的功能.
谢谢,皮特
Mar*_*nes 12
看一下WebApi的扩展点.
DefaultModelBinderWebApi中的MVC没有确切的等价物.
如果您正在使用该[FromBody]属性,那么FormatterParameterBinding将调用它,MediaTypeFormatter并将使用a来构建您的模型.
URI路径和Url(查询参数)的模型绑定将调用ModelBinderParameterBinding,它将传递给a IValueProvider或a IModelBinder...
所以...
在您的示例中Field(取决于内容类型协商的结果)将使用以下之一:XmlMediaTypeFormatter,JsonMediaTypeFormatter或FormUrlEncodedMediaTypeFormatter.因此,您可以使用各自的设置(例如JSON.NET设置)自定义这些的序列化行为...或者实现您自己的或包装的MediaTypeFormatter.
在你的例子中,appId可能会传递给IValueProvider...像ElementalValueProvider.
| 归档时间: |
|
| 查看次数: |
6395 次 |
| 最近记录: |