我正在使用这个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#Object)中看到exportOptions数组键的名称但是从不传递值...
有人可以帮我吗?
答案 0 :(得分:4)
通过这种方式解决了类似的问题:
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; }
}
答案 1 :(得分:0)
我首先会检查是否从客户端发送了值。我会使用浏览器调试器。在那里,您可以设置断点,并查看您发送的变量(JSON.stringify(exportOptions)
)是否具有值。
您可以使用F12按钮(来自Chrome或Firefox)并使用javascript调试器。在chrome中,您可以在“脚本”选项卡中执行此操作。在Firefox中,您可以在“来源”选项卡中执行此操作。
希望我帮忙!