2017-10-12 64 views
2

我试图在动作中传递一些json作为字符串,但它只适用于第一个参数。在Asp.net Core 1.1中传递两个参数在作用中

这里是动作:

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

    return ""; 
} 

下面是我通过双方的JSON PARAMS:

"{\"id\":1}" 

下面是结果 enter image description here

更多信息:

他正在使用大招来测试我的api重新是我输入的内容 enter image description here

回答

0

Answer found:这是由性能原因的框架块。所以我将使用包含我的jsons的字符串列表。

0

根据文档

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(); 
}