2016-09-25 67 views
1

每个谜语都有一个或多个问题,如何通过提交单个表单将谜语和问题添加到该谜语中?在一个动作中添加新的相关实体

这是RiddlesController创建动作代码:

public ActionResult Create(RiddleViewModel model) 
     { 
      if (ModelState.IsValid) 
      { 
       try 
       { 
        _db.Riddles.Add(new Models.Riddle 
        { 
         Name = model.Name, 
         Description = model.Description , 
         CreationDate = DateTime.Now, 
         User = _db.Users.Find(User.Identity.GetUserId()), 
        }); 
        _db.Questions.Add(new Models.Question 
        { 
         Body = model.FirstQuestionBody, 
         Answer = model.FirstQuestionAnswer, 
         CreationDate = DateTime.Now, 
         // What should I write here? or is there any better way to accomplish this? 
         Riddle = ????? 
        }); 
        _db.SaveChanges(); 
        return RedirectToAction("Index"); 
       } 

       catch 
       { 
        return View(); 
       } 
      } 
      return View(); 
     } 

这是里德尔型号代码:

public class Riddle 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    [MaxLength(200)] 
    [DataType(DataType.MultilineText)] 
    public string Description { get; set; } 
    public List<Review> Reviews { get; set; } 
    [Required] 
    public ApplicationUser User { get; set; } 
    public virtual List<Question> Questions { get; set; } 
    [Column(TypeName = "datetime2")] 
    public DateTime CreationDate { get; set; }  

} 

这是问题的模型代码:

public class Question 
    { 
     public int Id { get; set; } 
     public string Body { get; set; } 
     public string Answer { get; set; } 
     public Riddle Riddle { get; set; } 
     [Column(TypeName ="datetime2")] 
     public DateTime CreationDate { get; set; } 
    } 

这是RiddleViewModel代码:

public class RiddleViewModel 
    { 
     [Required] 
     public string Name { get; set; } 
     [MaxLength(200)] 
     [DataType(DataType.MultilineText)] 
     public string Description { get; set; } 
     // Question properties 
     [DataType(DataType.MultilineText)] 
     public string FirstQuestionBody { get; set; } 
     public string FirstQuestionAnswer { get; set; } 
    } 
+0

你能否显示你的模型代码?不要把image.just粘贴代码。 – Sampath

+0

我是新来的,找不到如何在评论中添加代码。 1秒 – Gimballock

+0

@桑帕斯好吧,完成。 – Gimballock

回答

1

您可以尝试如下所示。

_db.Questions.Add(new Models.Question 
        { 
         Body = model.FirstQuestionBody, 
         Answer = model.FirstQuestionAnswer, 
         CreationDate = DateTime.Now, 
         Riddle = new Models.Riddle 
            { 
            Name = model.Name, 
            Description = model.Description , 
            CreationDate = DateTime.Now, 
            User = _db.Users.Find(User.Identity.GetUserId()), 
            } 
         }); 

        _db.SaveChanges(); 
相关问题