我将 Visual Studio 2017 中的模板用于 asp.net core 2.0/react.js,但无法在正文中发布数据。id
来自 url 的正确填充,但来自正文的字符串是 null
.
如果重要的话,我正在使用 IIS Express。
到目前为止我的代码:
服务器部分:
[Produces("application/json")]
[Route("api/Parts")]
public class PartsController : Controller
{
// POST: api/Parts
[HttpPost("{id}")]
public void Post(int id, [FromBody]string value)
{
// breakpoint is hit.
// id is set.
// if I change "string value" to "dynamic value" I get an JObject.
}
}
客户端部分:
private sendUpdates() {
var payload = { "value": "2"}
fetch('api/Parts/5',
{
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
});
}
该请求在浏览器调试中看起来不错:
最佳答案
核心 API Controller
[Route("api/[controller]")]
public class TestingController : Controller
{
[HttpPost("test")]
public IActionResult Test(string pl)
{
if (pl == null)
{
return Ok();
}
PL plobj = JsonConvert.DeserializeObject<PL>(pl);
return Ok($"Test Test a=={plobj.a} b=={plobj.b}");
}
}
要序列化的 C# 类
public class PL
{
public string a { get; set; }
public string b { get; set; }
}
ReactJs 部分
constructor(props) {
super(props);
this.state = { text: "", loading: true};
var PL = {
a: 1,
b: 2
};
var data = new FormData();
data.append("PoLos", JSON.stringify(PL));
fetch('api/Testing/test',
{
method: "POST",
body: data
}).
then(response => response.text())
.then(data => {
this.setState({ text: data, loading: false });
});
}
我必须注意:React 部分中附加数据的名称必须与 Core Controller 中变量的名称相同(忽略大小写)
关于c# - 如何使用 asp.net core/react 发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48260402/