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



我正在使用这个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中,您可以在"来源"选项卡中执行此操作。

希望我有帮助!

相关内容

  • 没有找到相关文章

最新更新