Post复杂ajax到MVC控制器



我试图保存使用Ajax在浏览器中创建的场景。数据结构非常简单。主对象为Scene,子对象为SceneObject

这是我的Scene模型类:

public class Scene
{
[Key]
public int id { get; set; }
[Required]
public string name { get; set; };
public virtual ICollection<SceneItem> sceneItems { get; set; }
}

这是我的SceneItem模型类:

public class SceneItem 
{
[Key]
public int Id { get; set; }
[Required]
public string name { get; set; }
public float size { get; set;}
public int sceneId { get; set; }
virtual public Scene scene { get; set; }
}

这是我的Ajax代码:

var scene ={
sceneItems:[ {
id: 0,
name: "test1",
size: 0.35,
sceneID: 1
},
{
id: 0,
name: "test2",
size: 0.65,
sceneID: 1
}]
}

$.ajax({
type: "POST",
url: "/scene/create",
data: scene
}).done(function (data) {
alert(data);
});

当我执行这个Ajax调用时,在ASP. js的调试窗口中。. NET MVC应用程序,我可以看到所有字段都被填充,除了

virtual public Scene scene { get; set; }

从我的SceneItem模型。这使得控制器中的ModelState.IsValid返回false。

我能做些什么来使这项工作,我可以在一个单一的AJAX命令中发布一个Scene对象和许多SceneItem对象,并通过ModelState.IsValid并使用实体框架将其保存到我的数据库中?

谢谢你的帮助。

在ajax json中添加必需的字段名

var scene ={
id: 0,
name="name",
sceneItems:[ 
... your data
]
}

最新更新