我使用的是这个javascript数组:
var exportOptions = [{
jobName: ""},
{exportType: ""},
{attachToEmail: ""},
{distributorName: ""},
{vistaNumber: ""},
{customerName: ""},
{competitors: ""},
{agreementType: ""},
{ annualPotential: "" },
{businessCase: ""
}];然后我用下面的代码传递给ASP.NET代码隐藏(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#对象)中看到exportOptions数组键的名称,但从不传递值……
有人能帮我吗?
发布于 2013-12-26 11:27:53
解决类似问题的方法如下:
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; }
}发布于 2013-12-26 16:12:43
我将首先检查这些值是否从客户端发送。我会使用浏览器调试器。在那里,您可以设置断点并查看您发送的变量(JSON.stringify(exportOptions))是否有值。
您可以使用F12按钮(从Chrome或Firefox)和javascript调试器。在chrome中,你可以在"Script“标签中完成。在Firefox中,您可以在“源”选项卡中执行此操作。
希望我能帮上忙!
https://stackoverflow.com/questions/20778628
复制相似问题