首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP .NET Web API ModelBinder单参数

ASP .NET Web API ModelBinder单参数
EN

Stack Overflow用户
提问于 2018-08-30 03:35:23
回答 1查看 140关注 0票数 0

目前,我已经有了这个ModelBinder,它工作得很好:

代码语言:javascript
复制
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,但我真正想做的是只映射模型的媒体字段和映射为默认的所有其他字段。

这是我的控制器:

代码语言:javascript
复制
public HttpResponseMessage Post([ModelBinder(typeof(FooModelBinder))] Foo request)
        {
            //do something
        }

这是可以实现的吗?

EN

回答 1

Stack Overflow用户

发布于 2018-08-30 07:29:12

下面是我们所有的模型绑定器的定义:

公共类FooBinder : IModelBinder {

代码语言:javascript
复制
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
{
    if (bindingContext.ModelType == typeof(Foo))
    {
        return FooParameter(actionContext, bindingContext);
    }

    return false;
}

如果想从输入中创建多个参数,只需在控制器方法中指定所需的绑定器即可。

代码语言:javascript
复制
    public async Task<HttpResponseMessage> GetFoo(
        [ModelBinder] Foo1 foo1 = null, [ModelBinder] Foo2 foo2 = null)
    {
       ... 
    }

我可能误解了你的问题,但这是我们系统中真正的代码示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52084903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档