jquery – 使用$.post将对象集合传递给MVC控制器

前端之家收集整理的这篇文章主要介绍了jquery – 使用$.post将对象集合传递给MVC控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在尝试使用json和jQuery .post函数页面中的对象集合发送到控制器(MVC 3).下面是我们的js代码以及控制器和对象定义.

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

任何想法我们的实施有什么问题?

提前致谢!

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字符串.它作为本机方法内置于现代浏览器中.如果要支持没有此方法的旧版浏览器,则需要包含json2.js脚本,该脚本检查浏览器是否本机支持它,如果不支持则提供实现.

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

以下是成功请求的样子:

猜你在找的jQuery相关文章