C#MVC Ajax子列表
我有以下设置 HTMLC#MVC Ajax子列表,c#,ajax,list,model-view-controller,controller,C#,Ajax,List,Model View Controller,Controller,我有以下设置 HTML $.ajax({ url: 'Transaction/updateTransaction', data: saveDataObject, }).done(function (e) { // done }); 在网络选项卡中显示它正在发送正确的数据 查询字符串参数 key:2445 transactionDescription:Description Block transactionToType[0][transactionToTypeKey]:
$.ajax({
url: 'Transaction/updateTransaction',
data: saveDataObject,
}).done(function (e) {
// done
});
在网络选项卡中显示它正在发送正确的数据
查询字符串参数
key:2445
transactionDescription:Description Block
transactionToType[0][transactionToTypeKey]:1
transactionToType[0][transactionKey]:2445
transactionToType[0][transactionValue]:51.25
transactionToType[0][transactionTypeKey]:10
transactionToType[1][transactionToTypeKey]:2
transactionToType[1][transactionKey]:2445
transactionToType[1][transactionValue]:10.5
transactionToType[1][transactionTypeKey]:1
控制器
public class TransactionSave
{
public int key { get; set; }
public string transactionDescription { get; set; }
public List<TransactionToTypeSave> transactionToType { get; set; }
}
public class TransactionToTypeSave
{
public int transactionKey { get; set; }
public int transactionToTypeKey { get; set; }
public int transactionTypeKey { get; set; }
public decimal transactionValue { get; set; }
}
public int updateTransaction(TransactionSave transactionSave)
{
}
在ajax中传递对象内部的列表有什么不对
谢谢,它失败了,因为您的ajax调用正在发出GET请求 如果在使用
$.ajax
方法时未指定类型proeprty,它将进行GET调用。对于GET调用,数据将作为querystring键值项附加到要进行ajax调用的url中
当发送具有其他类型的子属性的复杂对象时,应考虑执行POST请求。查询字符串有一个基于浏览器的限制。当请求为POST类型时,数据将在请求正文中发送
这应该行得通
var saveDataObject =
{
key: 124,
transactionDescription:"My desc",
transactionToType: [{
transactionKey: 111,
transactionTypeKey: 164,
transactionValue:23.34
}
]
};
$.ajax({
type:'post',
url: '@Url.Action("updateTransaction","Transactions")',
contentType:"application/json",
data: JSON.stringify(saveDataObject)
}).done(function(e) {
console.log(e);
});
确保使用[HttpPost]属性标记了操作方法
[System.Web.Mvc.HttpPost]
public ActionResult updateTransaction(TransactionSave transactionSave)
{
return Json(transactionSave);
}
现在它将发送“application/json”作为ajax请求的contentType,js对象的json字符串化版本将在请求体中。模型绑定器将能够将发布的数据映射到您的对象谢谢Shyju。我试过了,但似乎得到了同样的结果。我的网络选项卡告诉我请求方法是post now,我的数据作为表单数据传递,这似乎表明您建议的所有操作都已完成,但值仍然为0。在控制台日志中运行您的确切代码(更改回url,transactionToType中的值也为0。您使用的是什么版本的MVC?版本4。您的集合数据的格式必须为
transactionToType[0]。transactionToType键:1
(属性名称周围没有括号)。但您不应将集合发送到GET方法。除了丑陋的查询字符串外,它可能会超出查询字符串限制并引发异常
[System.Web.Mvc.HttpPost]
public ActionResult updateTransaction(TransactionSave transactionSave)
{
return Json(transactionSave);
}