我试图将两个参数发送到MVC控制器方法,以通过Ajax请求将一些信息保存到我的MS SQL Server数据库。我的方法接收一个int和一个复杂类型对象的List。但是,该方法只能接收int参数,并为List接收null。
下面是我用来发送Ajax请求的jQuery脚本' ReferenceNo'和'很多'作为此请求的数据。
jQuery脚本(Ajax)
paramReferenceNo = 2;
paramLots = JSON.stringify(paramLots);
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: serverpath + '/Home/Save_Lots',
data: "{'paramReferenceNo':'" + paramReferenceNo + "', 'paramLots':'" + paramLots + "'}",
success: function (data) {
alert('Saved!');
}
});
以下是将数据保存到SQL Server中的MVC方法。在调试器模式下,当触发Ajax请求时,我可以从断点看到paramReferenceNo
'获得int 2但是' paramLots'得到null(Count = 0)。
Save_Lot(MVC_Controller方法)
public void Save_Lots(int paramReferenceNo, List<SalesProd_Lots> paramLots) {
using (SalesProdDBContext CDC = new SalesProdDBContext()) {
// Logic to save to database here....
}
}
请求返回200 -OK的响应。以下是“请求机构”&#39;取自IE网络调试器。
请求正文
{'paramReferenceNo':'2', 'paramLots':'[{"ReferenceNo":1,"LotNo":"CC-1889","isActive":true},{"ReferenceNo":1,"LotNo":"CD-1891","isActive":true},{"ReferenceNo":1,"LotNo":"CE-1892","isActive":true}]'}
我在SO上一直在寻找类似问题,但无法找到适用于我的解决方案。
提前致谢。
答案 0 :(得分:2)
首先编写一个封装所需参数的视图模型:
public class MyViewModel
{
public int ParamReferenceNo { get; set; }
public List<SalesProd_Lots> ParamLots { get; set; }
}
您的控制器操作将作为参数:
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!');
}
});