通过json将javascript数组传递给C#

我正在使用这个javascript数组:

var exportOptions = [{ jobName: ""}, {exportType: ""}, {attachToEmail: ""}, {distributorName: ""}, {vistaNumber: ""}, {customerName: ""}, {competitors: ""}, {agreementType: ""}, { annualPotential: "" }, {businessCase: "" }]; 

我用这段代码传递给ASP.NET codebehind(C#):

  $.ajax({ type: 'POST', url: 'Epad.aspx/generateReport', data: "{'columnList': '" + columnList + "', 'exportOptions':" + JSON.stringify( exportOptions ) + "}", contentType: 'application/json; charset=utf-8', dataType: 'json', async: true, cache: false, }); 

用这种方法读取C#:

 public static void generateReport(string columnList, Object exportOptions) {} 

columnList是一个字符串变量,我可以从C#中检索这些值,但是我在调​​试器中看不到exportOptions的值…我可以在Object exportOptions(C#Object)中看到exportOptions数组键的名称但是从不传递值…

任何人都可以帮我吗?

通过这种方式解决了类似的问题:

JS代码(处理函数的一部分):

  var ords = []; $(".order-count-input").filter(function() { return $(this).val() > 0; }).each(function() { ords.push({ GoodsId: $(this).attr("goodsId"), Amount: $(this).val() }); }); var data = { orders: ords, orderId: id }; var params = { url: actionUrl, type: "POST", contentType: "application/json; charset=utf-8", dataType: "json", data: JSON.stringify(data), success: function (data) { window.location.replace(data.redirect); } }; $.ajax(params); 

控制器动作:

 [HttpPost] public JsonResult PostOrder(long orderId, PostOrderViewModel[] orders) 

模型:

 [Serializable] public class PostOrderViewModel { public long GoodsId { get; set; } public int Amount { get; set; } } 

我首先检查值是从客户端发送的。 我会使用浏览器调试器。 在那里,您可以设置断点并查看您发送的变量( JSON.stringify(exportOptions) )是否具有值。

您可以使用F12按钮(来自Chrome或Firefox)并使用javascript调试器。 在chrome中,您可以在“脚本”选项卡中执行此操作。 在Firefox中,您可以在“源”选项卡中执行此操作。

希望我帮忙!