2017-10-12 66 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(); 
}