[英]Cannot post primitive types in asp.net core 2.0
我將非常簡單的json數據發布到.net Core 2.0 API。
為什么我有這樣的方法:
public async Task<IActionResult> GetNewToken([FromBody]string id)
然后id為null,但如果我將其封裝在模型中:
public class RandomViewModel
{
public string id { get; set; }
}
public async Task<IActionResult> GetNewToken([FromBody]RandomViewModel model)
然后我的id正確填充?
如果您的路由內容類型是application/json
則不能直接從您的身體獲取原始類型([FromBody] string id)
,因為mvc等待模型將json主體綁定到模型而不是基本類型。
有一些選項可以從請求體中獲取原始類型
將內容類型更改為純文本/文本。
使用StreamReader
獲取原始令牌字符串。
使用MVC InputFormatter
StreamReader
示例:
[HttpPost]
public async Task<IActionResult> GetNewToken()
{
using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
{
var token = await reader.ReadToEndAsync(); // returns raw data which is sent in body
}
// your code here
}
InputFormatter
示例: https : //weblog.west-wind.com/posts/2017/Sep/14/Accepting-Raw-Request-Body-Content-in-ASPNET-Core-API-Controllers
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.