创建MVC 4后,使用不同的ID重定向

时间:2016-07-20 22:26:38

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

我有一个模型教室,其中包含一系列注册,其中包含一系列组件和组件,其中包含一系列子组件。 (我知道这可能令人困惑,也许不是最好的方式)

public class Classroom
    {
        ...
        public virtual List<Enrollment> Enrollments { get; set; }
}
public class Enrollment
    {
       ...
       public virtual int ClassroomId { get; set; }
        public virtual Classroom Classroom { get; set; }
        public virtual List<Components> Components { get; set; }
       }
public class Component
    {
       ...
        public virtual int EnrollmentId { get; set; }   
        public virtual Enrollment Enrollment{ get; set; }
        public virtual List<Subcomponent> Subcomponents { get; set; }
}
public class Subcomponent
    {
       ...
        public virtual int ComponentId { get; set; }   
        public virtual Component Component{ get; set; }
}

在视图的注册中,我有一个表格来显示组件以及将来的子组件。创建子组件后,我需要使用相应的注册ID重定向到该注册视图。我有这段代码:

public ActionResult CreateSubcomponent(Subcomponent subcomponent)
        {
            if (ModelState.IsValid)
            {
                db.Subcomponents.Add(subcomponent);
                db.SaveChanges();
                return RedirectToAction("View", "Enrollment", new { id = ??? });
            }
...
}

我的问题是我该怎么做?我怎样才能从注册中获得身份证?我需要更改代码,如果是,如何更改? 感谢

1 个答案:

答案 0 :(得分:0)

要保存SubComponent,您需要保存ComponentId,因为它是外键。这意味着你应该在action方法中拥有ComponentId。您应该查询数据库以获取该ComponentId的Component记录,并使用该实体的Enrollement属性。

public ActionResult CreateSubcomponent(Subcomponent subcomponent)
{
   if (ModelState.IsValid)
   {
       db.Subcomponents.Add(subcomponent);
       db.SaveChanges();

       var c=db.Components.FirstOrDefault(s=>s.Id=subComponent.ComponentId);
       var enrollmentId = c.EnrollementId;
       return RedirectToAction("View", "Enrollment", new { id = enrollmentId });
    }
    // to do : return something
}