我有一个具有一些属性的对象(A),其中一个属于一个类型(B)的列表。
我有一个Web API Action,它将A对象作为参数。
我只是测试我可以通过JSON儿子传递这个对象我有一个带有一些Javascript的webform,如下所示.......
var tmpData = {
lid: "f8fdb980-ccb8-4a54-9b83-b73dd2d569ca",
aid: "8f6efc68-d747-42a4-b7d4-218951b66a97",
bid: "e9f5e5d2-5d3d-41ac-89dc-7586ec2a5286",
ps: []
};
tmpData['ps'].push({ "cid": "5a664dcc-8281-41f1-b81c-ae49499e12b8", "d": 5, "q": 2 });
tmpData['ps'].push({ "cid": "4e9a30e0-c741-4708-88d7-8db4941c17cc", "d": 10, "q": 2 });
var myJSON = JSON.stringify(tmpData);
//Call the action to get the list in JSON format
url = "http://localhost:64878/home/TakeTestBasketAddItemsRequest";
$.ajax({
url: url,
type: 'POST',
cache: false,
data: myJSON,
success: function (resultantData) {
var s = resultantData;
pResults.innerHTML = s;
}
});
这会使操作正常,并且对象在“ps”属性中有2个项目。 但是,这两个项目中的值会丢失,而且我会留下零/未初始化的值。
我是否丢失了列表项的值?
为清楚起见 - 这也是我的行动。
[HttpPost]
public ActionResult TakeTestBasketAddItemsRequest(ECodeBasketRequest model)
{
try
{
var sb = new StringBuilder();
sb.AppendLine(String.Format("LocationBridgeId: {0}{1}", model.lid, Environment.NewLine));
sb.AppendLine(String.Format("ApplicationBridgeId: {0}{1}", model.aid, Environment.NewLine));
sb.AppendLine(String.Format("BasketId: {0}{1}", model.bid, Environment.NewLine));
foreach (var p in model.ps)
{
sb.AppendLine(String.Format("CategoryBridgeId: {2} Denomination: {0} Quantity: {1}{3}", p.d, p.q, p.cid, Environment.NewLine));
}
return Content(sb.ToString());
}
catch (Exception ex)
{
return Content(string.Format("Problem: {0}", ex.ToString()));
}
}
正如我所说的那样,我现在只是在测试,所以我很乐意深究这一点。谢谢你的推荐, 蚂蚁
答案 0 :(得分:0)
道歉所有 - 但似乎我省略了内容类型.... contentType:" application / json"
当一些物体被重建时,它会产生误导,其余的不是......但是嘿嘿 - 这是星期五它正在工作..
希望它会帮助别人...... 所以我现在发现这有效.....
$.ajax({
url: url,
type: 'POST',
cache: false,
**contentType: "application/json",**
data: myJSON,
success: function (resultantData) {
var s = resultantData;
pResults.innerHTML = s;
}