gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:43:55 28 4
gpt4 key购买 nike

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

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

JS:

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:

public class ListViewModel
{
public List<ItemViewModel> ItemList { get; set; }
public float X { get; set; }
public float Y { get; set; }
}

ItemViewModel.cs:

public class ItemViewModel
{
public string Str; // originally posted with: { get; set; }
public bool Enabled; // originally posted with: { get; set; }
}

ListController.cs:

public ActionResult Save(ListViewModel list)
{
// Do something
}

这个 POST 的结果:

列表设置为 ListViewModel
设置了它的 X 和 Y 属性
设置了底层的 ItemList 属性
ItemList 包含一项,因为它应该
该 ItemList 中的项目未初始化。 Str 为 null 且 Enabled 为 false。

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

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使用我想避免的 hack, Controller 改为接收纯字符串,然后手动反序列化自身,而不是利用框架。

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

How to post an array of complex objects with JSON, jQuery to ASP.NET MVC Controller?这个可怜的家伙不得不写一个 JsonFilter 来解析一个数组。另一个我希望避免的黑客攻击。

那么,我该如何实现呢?

最佳答案

除了{get;放; },这些是JSON绑定(bind)支持的一些条件:

  1. 这是 ASP.NET MVC 3 中的新功能(参见“JavaScript and AJAX Improvements”)。
  2. JSON 对象的字符串(“X”、“Y”、“Str”和“Enabled”)必须与 ViewModel 对象的属性匹配。
  3. ViewModel 对象的属性必须有 { get;放; } 方法。
  4. 必须在请求中将 Content Type 指定为“application/json”。
  5. 如果仍然无法正常工作,请检查 JSON 字符串以确保它是有效的。

更多信息请访问 my post .

希望有帮助!

关于arrays - 通过 JSON 将对象数组发布到 ASP.Net MVC3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4789481/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com