【发布时间】:2016-01-19 08:11:32
【问题描述】:
我有一个带有 WebAPI 功能的 ASP MVC 项目。我正在尝试通过我的“Apache Cordove 工具”项目中的 jquery POST 请求调用这些 API。 (视觉工作室 2015) 它适用于大多数功能。但我有一个具有复杂参数的函数:
public JsonResult LoadHomePage(MostGoodsViewer mostgoodsviewer, SimilarItems newsitems, SimilarItems reviewitems, SimilarItems imaginalitems, string subDomain)
所有参数都是复杂的(最后一个除外)。例如:
public class MostGoodsViewer
{
public MostGoodsViewer()
{
ListGoodTypeId = new List<string>();
listPropertySetID = new List<int?>();
}
public List<string> ListGoodTypeId { get; set; }
public List<int?> listPropertySetID { get; set; }
public int PageSize { get; set; }
}
现在我想调用这个 API。首先,我声明我的参数:
var mostgoodsviewerP =
{
ListGoodTypeId: [],
listPropertySetID: [],
PageSize: 13
};
var newsitemsP =
{
ItemCodeText: "/",
ItemTypeId: 15,
Count: 9
};
var reviewitemsP =
{
ItemCodeText: "/",
ItemTypeId: 19,
Count: 9
};
var imaginalitemsP =
{
ItemCodeText: "/",
ItemTypeId: 20,
Count: 9
};
接下来,我使用 POST 方法:
xhr = $.post('https://localhost:44302/Home/LoadHomePage', {
mostgoodsviewer: JSON.stringify(mostgoodsviewerP),
newsitems: JSON.stringify(newsitemsP),
reviewitems: JSON.stringify(reviewitemsP),
imaginalitems: JSON.stringify(imaginalitemsP),
subDomain: 'electronic'
},
function (data) {
// for (var i = 0; i < 9; i++)
{
var a = data._goodsorderByTotalVisit;
// other stuff
}
}).fail(function (data) {
alert("error");
});
我也尝试使用 jQuery.param 而不是 JSON.stringify 但没有区别。 它总是使用数据“对象引用未设置为对象的实例”跳转到失败方法。
然后我尝试使用 Fiddler 程序而不是我的 cordova 项目来发送请求,并在函数标题下使用断点运行我的 MVC 项目。 我意识到参数不正确。例如,整数都为零。我不知道现在该怎么办!
【问题讨论】:
-
尝试在每个
modelclass上应用[serialize]属性。 -
@ParthTrivedi :我使用了 [Serializable] 但仍然没有区别
-
我遇到了类似的问题,我传递了参数
string,在jquery中使用JSON.stringify(),然后我使用了JsonConvert.DeserializeObject<MostGoodsViewer>(mostgoodsviewerString)之类的东西
标签: jquery asp.net-mvc post asp.net-web-api visual-studio-cordova