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

Web API1.1 ASP.NET Web API入门

Asp.Net Web API 2第六课——Web API路由和动作选择

Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化

Asp.Net Web API 2第七课——Web API异常处理

将文件从 ASP.NET Core Web api 发布到另一个 ASP.NET Core Web api