我正在使用这个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# 中检索到这个值,但我在调试器中看不到导出选项的值......我可以在对象导出选项(C# 对象)中看到导出选项数组键的名称,但从不传递值...
有人可以帮我解决这个问题吗?
通过以下方式解决了类似的问题:
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中,您可以在"来源"选项卡中执行此操作。
希望我有帮助!