将值添加到Child MVC时,将值添加到Parent

时间:2016-08-21 15:44:45

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我在添加/更新父级时看到了一些关于为孩子添加值的问题和答案,但我的问题恰恰相反。 我有一个具有父子关系的模型组件:

public class Component
    {
        public virtual int ComponentId { get; set; }

        public virtual string Type { get; set; }
        public virtual string Name { get; set; }

        public virtual Course Course { get; set; }

        public virtual int ParentId { get; set; }
        public virtual Component Parent { get; set; }
        public virtual List<Component> Childs { get; set; }

        public virtual List<Evaluation> Evaluations { get; set; }

}

我需要给每个用户评分。 我有这个模型:

public class Evaluation
    {
        public virtual int EvaluationId { get; set; }

        public virtual int ComponentId { get; set; }
        public virtual Component Component { get; set; }

        public virtual int UserCourseId { get; set; }
        public virtual UserCourse User { get; set; }

        public virtual int Grade { get; set; }
    }

一个视图,可以选择一个组件,并允许选择用户并给出成绩。只允许给最后一个孩子评分,并且他们的父母的成绩与孩子的成绩相同(未来意识形态将有更多的孩子,而父母的成绩将是他们成绩的总和)。所以我需要在数据库上创建一个具有相同等级但是选择了组件的父ID的新行。 我尝试了这段代码,但它不起作用:

[HttpPost]
        [ValidateAntiForgeryToken]
public ActionResult Create(Evaluation evaluation)
{                 

    if (ModelState.IsValid)
    {
        if (evaluation.Component.ParentId != 0)
        {
            var nota = new Evaluation
            {
                ComponentId = evaluation.Component.ParentId,
                UserCourseId = evaluation.UserCourseId,
                Grade = evaluation.Grade
            };
            db.Evaluations.Add(nota);
            db.SaveChanges();
        }

        db.Evaluations.Add(evaluation);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(evaluation);
}

(请注意,此代码可能也可能完全错误) 我怎样才能做到这一点? 感谢

1 个答案:

答案 0 :(得分:0)

创建nota后创建Component。像这样的东西:

    var nota = new Evaluation
                {
                    ComponentId = evaluation.Component.ParentId,
                    UserCourseId = evaluation.UserCourseId,
                    Grade = evaluation.Grade
                };

    var component= new Component();
    component.add(nota);
    db.Components.Add(component);
    db.SaveChanges();

由于父子关系,您应该会看到nota也添加到Evaluation表。