C# 在Asp.net Core 1.1中传递两个参数
我试图在操作中以字符串的形式传递一些json,但它只适用于第一个参数 行动如下:C# 在Asp.net Core 1.1中传递两个参数,c#,asp.net-core,asp.net-core-mvc,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}" 结果
[HttpPost("testy")]
public string testyJson([FromBody] String json, [FromBody] String shortJson)
{
dynamic o = MyModule.replaceInJson(json, shortJson);
return "";
}
以下是我传递给两个参数的json:
"{\"id\":1}"
结果如下
更多信息:
我正在使用swagger测试我的api,以下是我输入的内容
答案:由于性能原因,它被框架阻塞了。因此,我将使用包含JSON的字符串列表。根据文档 每个动作最多只能有一个参数,用
[FromBody]
。ASP.NET核心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();
}