2016-07-15 2 views
0

J'ai un modèle de vue imbriqué et je l'utilise pour mettre à jour (modifier) ​​le formulaire. Je suis en mesure de mettre à jour le parent et les enfants en utilisant UpdateModel mais pas en mesure de mettre à jour les grands enfants. J'ai essayé "Answers" et "Questions.Answers" pour le nom de préfixe UpdateModel mais il n'est pas mis à jour. Toute aide est appréciée!MVC: mise à jour de grands enfants à l'aide de UpdateModel

[HttpPost] 
    public ActionResult Edit(SurveyViewModel request) 
    { 
     try 
     { 
      var dbrecord = Survey.Get(request.SurveyID, Survey.FetchType.SurveyID); 
      UpdateModel(dbrecord); // Working 
      UpdateModel(dbrecord.SurveyQuestions, "Questions"); // Working 

      // Not Working 
      for (var i = 0; i < dbrecord.SurveyQuestions.Count; i++) 
      { 
       UpdateModel(dbrecord.SurveyQuestions[i].SurveyAnswers, "Questions[" + i + "].Answers"); 
      } 

      dbrecord.Save(); 

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

Voir modèle

public class SurveyViewModel 
{ 
    public int SurveyID { get; set; } 

    public string Name { get; set; } 

    public List<QuestionsRequest> Questions { get; set; } 

    public class QuestionsRequest 
    { 
     public string Question { get; set; } 

     public List<AnswersRequest> Answers { get; set; } 

     public class AnswersRequest 
     { 
      public string Answer { get; set; } 
     } 
} 

Répondre

0

Ceci est plus d'une solution et non une meilleure pratique, mais avez-vous essayé de placer l'état de l'entité à EntityState.Modified pour chaque élément dans la boucle avant d'appeler UpdateModel ?