相关疑难解决方法(0)

如何在ASP.NET Core中结合FromBody和FromForm BindingSource?

我创建了一个新的ASP.NET Core 2.1 API项目,其中Data包含dto类和以下控制器操作:

[HttpPost]
public ActionResult<Data> Post([FromForm][FromBody] Data data)
{
    return new ActionResult<Data>(data);
}
Run Code Online (Sandbox Code Playgroud)
public class Data
{
    public string Id { get; set; }
    public string Txt { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

它应该将数据回显给用户,没有任何幻想。但是,取决于顺序,两个属性中只有一个起作用。

这是测试要求:

curl -X POST http://localhost:5000/api/values \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'id=qwer567&txt=text%20from%20x-www-form-urlencoded'
Run Code Online (Sandbox Code Playgroud)

curl -X POST http://localhost:5000/api/values \
  -H 'Content-Type: application/json' \
  -d '{
    "id": "abc123",
    "txt": "text from application/json"
}'
Run Code Online (Sandbox Code Playgroud)

我尝试了几种方法,但都无济于事:

  • 创建一个自定义子项BindingSource,但这似乎只是元数据。
  • 使用属性[CompositeBindingSource(...)],但构造方法是私有的,可能不打算使用
  • IModelBinder为此创建一个and提供程序,但是(1)我可能只希望在特定的控制器操作上执行此操作,并且(2)似乎需要大量工作才能获得两个内部模型绑定程序(用于Body和FormCollection)

那么,什么是结合的正确方法FromForm和 …

c# asp.net-core

2
推荐指数
3
解决办法
1667
查看次数

标签 统计

asp.net-core ×1

c# ×1