ASP .NET Web API ModelBinder单个参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP .NET Web API ModelBinder单个参数相关的知识,希望对你有一定的参考价值。
目前我有这个ModelBinder工作得很好:
public class FooModelBinder : IModelBinder
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
var body = JObject.Parse(actionContext.Request.Content.ReadAsStringAsync().Result);
IEnumerable<Foo1> media = new List<Foo1>();
var transaction = body.ToObject<Foo2>();
media = body["Media"].ToObject<List<Foo3>>();
transaction.Media = media;
bindingContext.Model = transaction;
return true;
正如您所看到的,我正在映射整个bindingContext.Model,但我真正想要做的是仅映射Model的Media字段和所有其他字段以映射为默认值。
这是我的控制器:
public HttpResponseMessage Post([ModelBinder(typeof(FooModelBinder))] Foo request)
//do something
这可以实现吗?
答案
以下是我们所有模型绑定器的定义方式:
公共类FooBinder:IModelBinder
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
if (bindingContext.ModelType == typeof(Foo))
return FooParameter(actionContext, bindingContext);
return false;
如果要从输入中创建多个参数,可以在控制器方法中指定所需的活页夹。
public async Task<HttpResponseMessage> GetFoo(
[ModelBinder] Foo1 foo1 = null, [ModelBinder] Foo2 foo2 = null)
...
我可能误解了你的问题,但这是我们系统中真实代码的一个例子。
以上是关于ASP .NET Web API ModelBinder单个参数的主要内容,如果未能解决你的问题,请参考以下文章
Asp.Net Web API 2第三课——.NET客户端调用Web API
Asp.Net Web API 2第六课——Web API路由和动作选择
Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化