首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过json将javascript数组传递给C#

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

Stack Overflow用户
提问于 2013-12-26 11:04:38
回答 2查看 11K关注 0票数 2

我使用的是这个javascript数组:

代码语言:javascript
复制
 var exportOptions = [{
            jobName: ""},
            {exportType: ""},
            {attachToEmail: ""},
            {distributorName: ""},
            {vistaNumber: ""},
            {customerName: ""},
            {competitors: ""},
            {agreementType: ""},
            { annualPotential: "" },
            {businessCase: ""
        }];

然后我用下面的代码传递给ASP.NET代码隐藏(C#):

代码语言:javascript
复制
                    $.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#:

代码语言:javascript
复制
public static void generateReport(string columnList, Object exportOptions) {}

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

有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-26 11:27:53

解决类似问题的方法如下:

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

代码语言:javascript
复制
    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);

控制器操作:

代码语言:javascript
复制
[HttpPost]
public JsonResult PostOrder(long orderId, PostOrderViewModel[] orders)

型号:

代码语言:javascript
复制
[Serializable]
public class PostOrderViewModel
{
    public long GoodsId { get; set; }

    public int Amount { get; set; }
}
票数 4
EN

Stack Overflow用户

发布于 2013-12-26 16:12:43

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

您可以使用F12按钮(从Chrome或Firefox)和javascript调试器。在chrome中,你可以在"Script“标签中完成。在Firefox中,您可以在“源”选项卡中执行此操作。

希望我能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20778628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档