jQuery Ajax无法将对象列表发送到MVC控制器
我试图向MVC控制器方法发送两个参数,以便通过Ajax请求将一些信息保存到MS SQL Server数据库。我的方法接收一个int和一个复杂类型对象列表。但是,该方法只能接收int参数,并接收列表的null 下面是我用来发送Ajax请求的jQuery脚本,其中包含“ReferenceNo”和“Lots”作为该请求的数据 jQuery脚本(Ajax) 下面是将数据保存到SQL Server的MVC方法。在调试器模式下,当Ajax请求被激发时,我可以从断点看到jQuery Ajax无法将对象列表发送到MVC控制器,jquery,sql-server,ajax,asp.net-mvc-4,Jquery,Sql Server,Ajax,Asp.net Mvc 4,我试图向MVC控制器方法发送两个参数,以便通过Ajax请求将一些信息保存到MS SQL Server数据库。我的方法接收一个int和一个复杂类型对象列表。但是,该方法只能接收int参数,并接收列表的null 下面是我用来发送Ajax请求的jQuery脚本,其中包含“ReferenceNo”和“Lots”作为该请求的数据 jQuery脚本(Ajax) 下面是将数据保存到SQL Server的MVC方法。在调试器模式下,当Ajax请求被激发时,我可以从断点看到paramReferenceNo”获取i
paramReferenceNo
”获取int 2,但“paramLots”获取null(Count=0)
保存批次(MVC控制器方法)
我一直在寻找类似的问题,但找不到适合我的解决方案
提前感谢。首先编写一个视图模型,该模型将封装所需的参数:
public class MyViewModel
{
public int ParamReferenceNo { get; set; }
public List<SalesProd_Lots> ParamLots { get; set; }
}
然后在客户端:
paramReferenceNo = 2;
lots = paramLots; // this could be a complex object
$.ajax({
contentType: 'application/json; charset=utf-8',
type: 'POST',
url: serverpath + '/Home/Save_Lots',
data: JSON.stringify({
paramReferenceNo: paramReferenceNo,
paramLots: lots
},
success: function (data) {
alert('Saved!');
}
});
首先编写一个视图模型,该模型将封装所需的参数:
public class MyViewModel
{
public int ParamReferenceNo { get; set; }
public List<SalesProd_Lots> ParamLots { get; set; }
}
然后在客户端:
paramReferenceNo = 2;
lots = paramLots; // this could be a complex object
$.ajax({
contentType: 'application/json; charset=utf-8',
type: 'POST',
url: serverpath + '/Home/Save_Lots',
data: JSON.stringify({
paramReferenceNo: paramReferenceNo,
paramLots: lots
},
success: function (data) {
alert('Saved!');
}
});
您正在传递String
paramLots=JSON.stringify(paramLots)
并尝试以List
DeleteparamLots=JSON.stringify(paramLots)的形式访问它使用data:JSON.stringify({paramReferenceNo:paramReferenceNo,paramLots:paramLots}),
@StephenMuecke谢谢,伙计,你的解决方案成功了。介意将您的评论发布为答案吗?Darin Dimitrov添加了一个答案,表明您正在传递字符串paramLots=JSON.stringify(paramLots)
并尝试以List
DeleteparamLots=JSON.stringify(paramLots)的形式访问它使用data:JSON.stringify({paramReferenceNo:paramReferenceNo,paramLots:paramLots}),
@StephenMuecke谢谢,伙计,你的解决方案成功了。介意将您的评论作为答案发布吗?Darin Dimitrov添加了一个答案,表明(视图模型并非完全必要,但也是一个好主意)不幸的是,应用程序的设计不支持视图模型。我决定沿用原来的设计,暂时取消视图模型。尽管您针对客户端脚本的解决方案似乎很适合我的问题,即使使用我目前使用的双参数MVC方法。谢谢。不幸的是,应用程序的设计不利于视图模型。我决定沿用原来的设计,暂时取消视图模型。尽管您针对客户端脚本的解决方案似乎很适合我的问题,即使使用我目前使用的双参数MVC方法。谢谢
public void Save_Lots(MyViewModel viewModel)
{
...
}
paramReferenceNo = 2;
lots = paramLots; // this could be a complex object
$.ajax({
contentType: 'application/json; charset=utf-8',
type: 'POST',
url: serverpath + '/Home/Save_Lots',
data: JSON.stringify({
paramReferenceNo: paramReferenceNo,
paramLots: lots
},
success: function (data) {
alert('Saved!');
}
});