我有一个 MVC 项目,带有一个简单的控制器和一个视图。
我正在尝试从 JavaScript 向控制器发出 POST 请求,但由于某种原因,参数是
null
.
C#:
using Microsoft.AspNetCore.Mvc;
namespace Tester.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
[HttpPost]
public string SendData1([FromBody]string data)
{
// data is null!
return Newtonsoft.Json.JsonConvert.SerializeObject(new { got = data });
}
}
}
Index.cshtml
@{
ViewData["Title"] = "Home Page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
<script>
window.addEventListener('DOMContentLoaded', ()=>{
document.getElementById('send').addEventListener('click', ()=>{
const text = document.getElementById('text').value;
const path = window.location.origin;
fetch(path + '/Home/SendData1', {
method: 'post',
credentials: "include",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ data: text })
})
.then(x => x.json())
.then(console.log);
})
})
</script>
<div>
<input type="text" id="text" />
<button type="button" id="send">Send</button>
</div>
这有点管用,我在前端得到了响应,但它打印了
{ "got": null }
。显然,如果我用断点停止 C# 代码,它也会为参数说“null”。我尝试了不同的属性,如[FromForm]
,但没有成功。
我怎样才能完成这项工作?