entity-framework - 将复杂的 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.NET MVC 应用程序的调试窗口中,我可以看到所有字段都已填充,除了

virtual public Scene scene { get; set; }

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

我该怎么做才能使这项工作以我可以在单个 AJAX 命令中与许多 SceneItem 对象一起发布 Scene 对象并传递 ModelState.IsValid 并使用 Entity Framework 将其保存到我的数据库中的方式工作?

非常感谢您的帮助。

回答1

将必填字段名称添加到您的 ajax json

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

相似文章

最新文章