【问题标题】:Passing two parameters in action in Asp.net Core 1.1 [duplicate]在 Asp.net Core 1.1 中传递两个参数 [重复]
【发布时间】:2018-03-24 16:25:51
【问题描述】:

我正在尝试在操作中将一些 json 作为字符串传递,但它仅适用于第一个参数。

这里是动作:

[HttpPost("testy")]
public string testyJson([FromBody] String json, [FromBody] String shortJson)
{
    dynamic o = MyModule.replaceInJson(json, shortJson);

    return "";
}

这是我传递给两个参数的 json:

"{\"id\":1}"

这是结果

更多信息:

我正在使用 swagger 测试我的 api,这是我输入的

【问题讨论】:

    标签: c# asp.net-core asp.net-core-mvc


    【解决方案1】:

    根据文档

    Binding formatted data from the request body

    每个动作最多可以有一个参数 [FromBody]。 ASP.NET Core MVC 运行时委托 负责将请求流读取到格式化程序。一次 请求流是为参数读取的,一般不会 可以再次读取请求流以绑定其他 [FromBody]参数。

    强调我的

    所以第一个参数将从正文中填充,但第二个参数不会因为流已经被读取。

    我建议创建一个模型来保存要传递给操作的所有信息...

    public class JsonModel {
        public string json { get; set;}
        public string shortJson { get; set;}
    }
    

    ...并将其用于操作参数

    [HttpPost("testy")]
    public IActionResult testyJson([FromBody]JsonModel model) {
        var json = model.json;
        var shortJson = model.shortJson;
        dynamic o = MyModule.replaceInJson(json, shortJson);
    
        return Ok();
    }
    

    【讨论】:

      【解决方案2】:

      已找到答案:出于性能原因,它被框架阻止。所以我将使用包含我的 jsons 的字符串列表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-09
        • 2021-08-02
        • 2021-01-21
        • 2014-10-09
        • 1970-01-01
        • 2017-07-14
        • 1970-01-01
        相关资源
        最近更新 更多