gpt4 book ai didi

c# - Ajax Post 将 null 传递给 Controller

转载 作者:行者123 更新时间:2023-11-30 22:53:57 25 4
gpt4 key购买 nike

我正在向 MVC Controller 发出 AJAX POST 请求,但数据以 null 形式通过。我不确定为什么。

$(document).ready(function() {
$("#btnSaveCustomer").click(function() {
debugger;
var data = {
_DcLink: "1",
_Account: "Test",
_Name: "TestName",
_Title: "Mr",
_Init: "T"
}

$.ajax({
method: "POST",
url: '/Customer/SaveCustomer',
data: JSON.stringify(data),
success: function() {
debugger;
console.log(data)
alert("Success")
},
error: function() {
alert("Error")
}
});
})
public ActionResult SaveCustomer(string data)
{
using (var ms = new MemoryStream(Encoding.UTF32.GetBytes(data)))
{
// Deserialization from JSON
DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(Customer));
Customer serializeddata = (Customer)deserializer.ReadObject(ms);
}
return Json(new { Success = true });
}

无论我如何尝试序列化数据,它始终为 null。我相信 AJAX POST 方法没有正确执行

我正在使用虚拟数据来解决问题。

代码在 Controller 中的 MemoryStream 处遇到断点 - 声明数据为 null

System.ArgumentNullException: 'String reference not set to an instance of a String. Parameter name: s'

感谢任何帮助

最佳答案

这是因为 ModelBinder 期望 JSON 中有一个名为 data 的属性,但您没有发送它;所有属性都在根对象中。如果你绑定(bind)到一个模型,那会很好用,但因为你不是,你需要稍微修改你的 JS 中的数据结构,如下所示:

var data = { 
data: {
_DcLink: "1",
_Account: "Test",
_Name: "TestName",
_Title: "Mr",
_Init: "T"
}
}

关于c# - Ajax Post 将 null 传递给 Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56681795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com