【问题标题】:ASP.NET Core empty parameters by HTTPOST from JavaScript来自 JavaScript 的 HTTPOST 的 ASP.NET Core 空参数
【发布时间】:2020-07-11 05:48:01
【问题描述】:

我正在创建一个 ASP.NET Core WepApp,但在将数据从 javascript 发送到我的服务器时遇到问题。

HTML:

<button onclick="sendData()">Send Data to the Server</button>

JavaScript:

    function sendData() {

        var xhr = new XMLHttpRequest();
        xhr.open("POST", "/Cockpit/Index", true);
        xhr.setRequestHeader('Content-Type', 'application/json');
        xhr.send(JSON.stringify({
            "Test": "value"
        }));
     };

ASP.NET 核心

namespace Paragliding.Controllers
{
    public class CockpitController : Controller
    {
        [HttpPost]
        public IActionResult Index(Test test)
        {
            return Json(test);
        }

        public IActionResult Index()
        {
            return View();
        }

    }
}

课堂测试

namespace Paragliding.Models
{
    public class Test
    {
        public string TestValue { set; get; }
    }
}

当我按下按钮将数据发送到服务器时,通过调试可以看到,他在方法内部跳转

[HttpPost]
public IActionResult Index(Test test)

但参数test始终为空。

【问题讨论】:

  • xhr.send中将json参数名称从“Test”改为“TestValue”

标签: javascript asp.net-core xmlhttprequest http-post


【解决方案1】:

参数test始终为空

您可以尝试修改如下代码。

function sendData() {
    var xhr = new XMLHttpRequest();

    xhr.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            console.log(this.responseText);
        }
    };

    xhr.open("POST", "/Cockpit/Index", true);
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.send(JSON.stringify({
        "TestValue": "blabla here"
    }));
 };

[FromBody] 属性应用于参数

[HttpPost]
public IActionResult Index([FromBody]Test test)
{
    return Json(test);
}

测试结果

【讨论】:

  • 成功了,非常感谢。我有一个跟随问题。这个 return Json(test) 到底去哪里了?返回我调用此方法的页面?因为我的目标是将这些数据(blabla here)存储在 MSSQL 数据库中。我可以把“return Json(test)”直接放在这里保存的代码吗?或者我必须在其他地方做这个?最好的问候 Buhli
  • my goal is to store this data (blabla here) in a MSSQL database 可以在该action方法中进行数据插入,并返回自定义消息,如“成功”、“失败”等,指示插入是否成功。
猜你喜欢
  • 2019-05-21
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多