来自json的web api 2绑定模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了来自json的web api 2绑定模型相关的知识,希望对你有一定的参考价值。

我需要从请求绑定模型并转换为我的自定义对象,我的请求数据是json,方法是post。

这是我在web api中的方法:

public IHttpActionResult Edit([ModelBinder(typeof(KModelBinder))] object data) 

我的问题是:我无法从modelbinder中的ValueProvider访问json。

public class KModelBinder : IModelBinder {
    public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext) {
        var valueProvider = bindingContext.ValueProvider;
        var valProviderResult = valueProvider.GetValue("id");
        // ....
    }
}
答案

您可以尝试这样的基本控制器类

public class BaseController<T>: ApiController
{

    //here you can add whatever dependency injection you may use
    public BaseController(DbContext context) 
    {
        _context = context;  
    }

   [HttpPost]
   public IHttpActionResult Add(T data)
   {
       return Ok(_context.Add(data));
   }

   [HttpPut]
   public IHttpActionResult Edit(T data)
   {
        _context.Modify(data); //here depends on your ORM or data access layer
        return Ok(data);
   }

   /*other methods you think are necessary in this base controller*/
}

之后您可以像这样定义控制器

public class UserController: BaseController<User>
{
   //here you can override the base controller methods
}

我在当前的项目中使用了一些类似的方法并且工作正常。

检查一下,看看这是否适用于您的项目。

以上是关于来自json的web api 2绑定模型的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web API - 模型绑定不适用于 POST 上的 XML 数据

来自 JSON 的 WebAPI 模型绑定

Web Api 模型绑定 一

SAPUI5 在 JSON 模型 2 中使用来自 JSON 模型 1 的值

实用代码片段将json数据绑定到html元素 (转)

如何在 asp.net core web api 中绑定 Json Query 字符串