json - MVC3 自动绑定(bind)到 JSON 对象列表不适用于属性

标签 json asp.net-mvc-3

我有一个要发布到 MVC3 Controller 的 JSON 对象数组。根据我运行的 fiddler 检查,JSON 似乎可以正常发布。 (包含在下面) Controller 正在接受我设置的自定义类来接收 JSON 数据。这似乎也能正常工作(下面包含调试器屏幕截图)问题是对象属性似乎不像我期望的那样自动绑定(bind)。名称都匹配,我不确定这个问题。

下面是jquery(先点击添加到数组,再点击post数据)

var removes = [];
var adds = [];

var transaction = {
    'adds': adds,
    'removes': removes
};

jQuery(".AddCardLink").click(function () {
            var card = [{
                Id: jQuery(this).attr("cardid"),
                Name: jQuery(this).attr("cardname")
            }];
            transaction.adds.push(card);
        })

jQuery("#btnSave").click(function () {
            jQuery.ajax({
                type: "POST",
                url: "/SaveTransactionLog",
                data: JSON.stringify(transaction),
                dataType: "json",
                contentType: "application/json",
                success: function (data) {
                   alert("Test");
                }
            });
        });

这是发送数据的fiddler View

Fiddler

自定义类和 Controller 如下:

public class Card
{
  public int Id { get; set; }
  public string Name { get; set; }
}

public class JsonTransaction
{
     public List<Card> Adds { get; set; }
     public List<Card> Removes { get; set; }
}

[HttpPost]
public JsonResult SaveTransactionLog(JsonTransaction transaction)
{ 
   return  Json()
}

最后,这里是调试器查看 JsonTransaction,您可以看到自动绑定(bind)设置了正确的列表,但是列表属性中的 Card 是空的。

enter image description here

如果你坚持到最后,谢谢!任何帮助都会很棒!

最佳答案

啊!在为此花了整个周末并在昨天终于在 SO 上发帖后,我发现了我的问题!

我的 Jquery 当我通过 onclick 添加对象时,我的对象周围有一个额外的方括号。删除方括号解决了我的问题。

jQuery(".AddCardLink").click(function () {
            var card = **[**{
                Id: jQuery(this).attr("cardid"),
                Name: jQuery(this).attr("cardname")
            }**]**;
            transaction.adds.push(card);
        })

关于json - MVC3 自动绑定(bind)到 JSON 对象列表不适用于属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9070077/

相关文章:

javascript - Dojo 的 xhrPost 和 Firefox

php - 如何使用 JSON.stringify 在 javascript/node js 中模拟 php 的 json_encode?

javascript - 将数据加载到我不知道列的数据表中

c# - MVC3 应用程序中的 BackgroundWorker 卡住 UI

json - 如何使用 express 从 403 发回 json

ruby-on-rails - 在 ruby​​ 中自定义 as_json 响应

jquery - 如何防止使用 jQuery 提交表单?

asp.net-mvc - asp.net mvc 3,主题(不同 View )

c# - EF 5、.Net 4.5 加载多对一子对象时出现问题

asp.net-mvc - 隐藏日期时间的 ASP.NET MVC 格式