在MVC C#中从客户端传递列表到服务器端#

时间:2012-10-19 11:57:58

标签: c# asp.net-mvc list

以下是我正在使用的代码。

UpdateMultipulGroupContactId = "1,2,3,4";

客户端功能

function UpdateMultipulGroup() {
    jQuery.ajax({
        url: "/Json/Contact_Update_Groups_NickName",
        type: "POST",
        data: {
            rid: UpdateMultipulGroupContactId,
            gids: strArray,
            nickname: 'abc'
        },
        dataType: "html",
        success: function (data) {
            var data = JSON.parse(data);
            alert(data.message);
            $("#Notes" + EditContactIdNotes).html($("#txtNotes").val());
            CloseLightBox();
        },
        error: function (error) {
            alert(error);
        }
    });

}

服务器端功能

public ActionResult Contact_Update_Groups_NickName(long rid, List<long> gids, string nickname)

我尝试使用数组,但我一直都是空值。

如何将UpdateMultipulGroupContactId作为此功能的列表传递?

2 个答案:

答案 0 :(得分:0)

您可以序列化数据,也可以发送$('#myField').val()

之类的值
        var myField = $('#myField').serialize();

        if (myField)
        {
            $.ajax({
                url: '/MyController/AjaxUpdate',
                type: 'post',
                data: { myField: myField },
                dataType: 'json',
                success: function (result) {
                    // do something
                },
                error: function (result) {
                    //alert('An error occurred when updating the database.  Please contact technical support.  ');
                }
            });
        }

    });

答案 1 :(得分:0)

绑定到IList<T>

blog post of mine可以帮助实现,因为它基本上是在讨论这个问题。如何将客户端数据绑定到控制器操作中的IList<T>

博客文章解释说,实际上必须将值编入索引,如

gids[0] = 1;
gids[1] = 2;

发送复杂的JSON对象

但是我还编写了一个very simple jQuery plugin来完成从复杂JSON对象到MVC模型绑定器很容易使用的对象的所有转换。它还可以使用各种数据类型(日期等)并正确转换它们,以便Asp.net MVC可以在服务器端无需任何更改即可开箱即用。

复杂对象是指具有多个层次结构深度的JSON对象。因为JSON对象越复杂,您在代码中的操作就越多。插件简化了单个函数调用并为其提供了JSON对象。

使用该插件会将您的代码更改为:

var data = {
    rid: 1234567890, // this is a "long" number
    gids: [1,2,3,4], // or "1,2,3,4".split(",")
    nickname: 'abc'
};

function UpdateMultipulGroup() {
    jQuery.ajax({
        url: "/Json/Contact_Update_Groups_NickName",
        type: "POST",
        data: $.toDictionary(data),
        success: ...
        ...
     });
}