在Asp.net Core 1.1中传递两个参数

时间:2017-10-12 16:26:42

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

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

以下是行动:

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

    return "";
}

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

"{\"id\":1}"

结果如下 enter image description here

更多信息:

我使用招摇来测试我的api,这就是我输入的内容 enter image description here

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

答案发现:由于性能原因,它受到框架的阻碍。所以我将使用包含我的jsons的字符串列表。