我试图保存使用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
]
}