使用MVC 3将JSON绑定到IEnumerable

时间:2012-03-12 18:59:21

标签: asp.net-mvc asp.net-mvc-3

我正在使用MVC 3,我有以下控制器:

[HttpPost]
public ActionResult Suggest(IEnumerable<Connection> connect)
{
    return Json(new { result = true });
}

public class Connection
{
    public long Id { get; set; }
    public string Name { get; set; }
}

我的JQuery看起来像:

var connections = $('.on');
var connect = [];

$.each(connections, function (i, item) {
     var span = $(item);

     var id = span.attr('data-entity-id');
     var name = span.attr('data-entity-name');


     connect.push({ Id: id, Name: name });
 });

 $.post('myurl', connect, function (data) {
     $('.result').html(data);
 });

使用此代码时,JSON绑定无效。

1 个答案:

答案 0 :(得分:2)

您没有发布JSON。您需要对数据进行字符串化,然后告诉服务器您正在发送JSON数据。为了对JSON进行字符串化,您需要包含Crockford的JSON2库。 (那是发明JSON的人。)

$.ajax({
    url: "myurl",
    type: "POST",
    data: JSON.stringify({ connect: connect }),
    contentType: 'application/json'
    success: function (data) {
        $('.result').html(data);
    }
});

另外,我认为您可能需要制作动作参数List<Connection> connect