首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过JSON将对象数组发布到ASP.Net MVC3

通过JSON将对象数组发布到ASP.Net MVC3
EN

Stack Overflow用户
提问于 2011-01-25 10:39:30
回答 4查看 71.7K关注 0票数 65

我正在寻找一种通过JSON将对象数组POSTing到MVC3的解决方案。

我正在编写的示例代码:http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx

JS:

代码语言:javascript
复制
var data = { ItemList: [ {Str: 'hi', Enabled: true} ], X: 1, Y: 2 };

$.ajax({
    url: '/list/save',
    data: JSON.stringify(data),
    success: success,
    error: error,
    type: 'POST',
    contentType: 'application/json, charset=utf-8',
    dataType: 'json'
});

ListViewModel.cs:

代码语言:javascript
复制
public class ListViewModel
{
    public List<ItemViewModel> ItemList { get; set; }
    public float X { get; set; }
    public float Y { get; set; }
}

ItemViewModel.cs:

代码语言:javascript
复制
public class ItemViewModel
{
    public string Str;   // originally posted with: { get; set; }
    public bool Enabled; // originally posted with: { get; set; }
}

ListController.cs:

代码语言:javascript
复制
public ActionResult Save(ListViewModel list)
{
    // Do something
}

这篇文章的结果是:

列表已设置为ListViewModel

设置其X和Y属性

设置基础ItemList属性

ItemList包含一项,这是理所应当的

该ItemList中的项未初始化。Str为空,Enabled为false。

换句话说,这就是我从MVC3的模型绑定中得到的:

代码语言:javascript
复制
list.X == 1
list.Y == 2
list.ItemList != null
list.ItemList.Count == 1
list.ItemList[0] != null
list.ItemList[0].Str == null

看起来MVC3 JsonValueProvider不适用于复杂对象。我怎么才能让它工作呢?我是否需要修改并修复现有的MVC3 JsonValueProvider?如果是这样,我如何获取它并在MVC3项目中替换它?

我已经提出的相关StackOverflow问题都无济于事:

Asp.net Mvc Ajax Json (post Array)使用MVC2和更老的基于表单的编码-这种方法对于包含对象数组的对象失败(JQuery无法对其进行正确编码)。

Post an array of complex objects with JSON, JQuery to ASP.NET MVC Controller使用了一种我想避免的方法,即控制器接收一个普通字符串,然后手动反序列化自己,而不是利用框架。

MVC3 RC2 JSON Post Binding not working correctly 没有设置他的内容类型-它是在我的代码中设置的。

这个可怜的家伙不得不写一个JsonFilter来解析一个数组。另一个我更希望避免的黑客攻击。

那么,我如何实现这一点呢?

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

https://stackoverflow.com/questions/4789481

复制
相关文章

相似问题

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