POST 数据到 MVC-Controller 为空

问题描述 投票:0回答:0

我有一个 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]
,但没有成功。

我怎样才能完成这项工作?

c# asp.net-mvc post .net-7.0
© www.soinside.com 2019 - 2024. All rights reserved.