gpt4 book ai didi

jQuery AJAX - Controller 上的数据参数为空

转载 作者:行者123 更新时间:2023-12-01 07:21:22 24 4
gpt4 key购买 nike

使用 ASP.NET MVC 3,我正在进行 jQuery(ver 1.7.1)AJAX 调用,就像我已经做过十亿次一样。然而,我注意到一些奇怪的事情。 以下调用工作正常:

// license object
var license = {
City: "New York",
CompanyID: 1,
County: "N/A",
IsActive: true
};
// make the request
var $req = $.post('/License/theLicense', license);
$req.success(function () {
// this works!
});


[HttpPost]
public void Save(License theLicense)
{
// save
}

但是,当我为 Controller 指定数据参数时,它不会在 Controller 上注册

// license object
var license = {
City: "New York",
CompanyID: 1,
County: "N/A",
IsActive: true
};
// make the request
// this time the controller parameter is specified
// the object will be blank at the server
var $req = $.post('/License/theLicense', { theLicense: license });
$req.success(function () {
// this does not work
});

Controller 上的对象为空白,如下所示

enter image description here

这很烦人,因为我需要传递另一个数据参数,但由于这个问题我不能。

注意: JSON 与 POCO 相同。

为什么当我指定数据参数时,对象在 Controller 上显示为空白,但当我不指定时,它就很好?

最佳答案

有时 POCO 解串器会因为奇怪的原因而被捕获。我之前见过它,我的 JSON 对象与 POCO 完全匹配,但它仍然不会反序列化。

发生这种情况时,我通常将对象作为 JSON 字符串发送到服务器,然后在服务器上反序列化。我个人使用 ServiceStack.Text,因为它是最快的。

所以你的 jQuery 会像这样:

var license = {
City: "New York",
CompanyID: 1,
County: "N/A",
IsActive: true
};

var $req = $.post('/License/theLicense', JSON.stringify(license));

然后你的 Controller 将接受一个字符串参数(json)来反序列化对象:

   [HttpPost]
public void Save(string json)
{
License theLicense = JsonSerializer<License>.DeserializeJsonString(json);
// save
}

关于jQuery AJAX - Controller 上的数据参数为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13420932/

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