gpt4 book ai didi

jquery - 使用 $.post 将对象集合传递到 MVC Controller

转载 作者:行者123 更新时间:2023-12-03 22:37:13 26 4
gpt4 key购买 nike

我们正在尝试使用 json 和 jQuery .post 函数将对象集合从页面发送到 Controller (MVC 3)。下面是我们的 js 代码以及 Controller 和对象定义。

问题是,当对象被适本地发送到我们的 Controller 时,它的成员变量没有被填充。 “Coords”列表具有适当数量的“Coord”对象,但每个 Coord 对象的成员变量都填充为零(非空),而不是我们传入的值。请参见屏幕截图:

您知道我们的实现有什么问题吗?

提前致谢!

enter image description here

Coord1 = { "X": 100, "Y": 200 };
Coord2 = { "X": 300, "Y": 400 };

zoneData = { "Color": "#D8F834", "Name": "new zone", "Coords": [Coord1, Coord2] }

$.post("/Demo/SaveZone", zoneData, function (resp) {
alert(resp);
}, "json");





[HttpPost]
public ActionResult SaveZone(ZoneViewModel zvm)
{
Zone z;

z = AutoMapper.Mapper.Map<ZoneViewModel, Zone>(zvm);

_db.Zone.Attach(z);
_db.SaveChanges();

return View();
}


public class ZoneViewModel
{

public int Id { get; set; }
public string Name { get; set; }
public string Color { get; set; }

public CoordViewModel[] Coords { get; set; }

}


public class CoordViewModel
{
public int Id { get; set; }
public int X { get; set; }
public int Y { get; set; }

}

最佳答案

可能最简单的方法是使用 JSON 请求:

var coord1 = { X: 100, Y: 200 };
var coord2 = { X: 300, Y: 400 };
var zoneData = {
Color: '#D8F834',
Name: 'new zone',
Coords: [ coord1, coord2 ]
};

$.ajax({
url: '/Demo/SaveZone',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(zoneData),
success: function(resp) {
alert(resp);
}
});

JSON.stringify 方法将 javascript 对象序列化为 JSON 字符串。它作为 native 方法内置于现代浏览器中。如果您想支持没有此方法的旧版浏览器,您需要包含 json2.js脚本检查浏览器是否原生支持它,如果不支持它提供一个实现。

现在一切都应该正确绑定(bind):

enter image description here

成功的请求如下所示:

enter image description here

关于jquery - 使用 $.post 将对象集合传递到 MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6727192/

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