2015-11-04 96 views
0

好吧!我正在使用ASP.MVC5。我試圖做的是循環包含對象的數組,每個對象包含數組屬性:ASP.MVC5 - Foreach with property array

我有這個類:

public class MylistModels 
{ 
    public string Subtitle { get; set; } 
    public string[] Question { get; set; } 
} 

的邏輯是:
我有一個POST形式HTML(我可以添加多個字段,如果我想):

<input type="text" placeholder="Subtitle here" name="lists[0].Subtitle" /> 
<input type="text" placeholder="Subtitle here" name="lists[0].Question" /> 
<input type="text" placeholder="Subtitle here" name="lists[0].Question" /> 
<input type="text" placeholder="Subtitle here" name="lists[1].Subtitle" /> 
<input type="text" placeholder="Subtitle here" name="lists[1].Question" /> 
<input type="text" placeholder="Subtitle here" name="lists[1].Question" /> 
<input type="text" placeholder="Subtitle here" name="lists[2].Subtitle" /> 
<input type="text" placeholder="Subtitle here" name="lists[2].Question" /> 
<input type="text" placeholder="Subtitle here" name="lists[2].Question" /> 

當我點擊保存我把它發送到一個動作:

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create(List<MylistModels> lists) 
{ 
    if (ModelState.IsValid) 
    { 
     //how to loop the arrays that contains a subtitle with questions array? 

     return RedirectToAction("Index"); 
    }       
    return View(); 
} 

當我收到它的作用,它看起來像這樣:
我收到對象的數組,每個人都有你與你的問題
實驗值:在「字幕」字幕始終是一個在每個對象「問題」我可以有一個或多個。

問題:
如何在每個對象數組中循環並在每個此對象的問題中再次循環?

我試圖做這樣的,但它不工作:

SubtitleChecklist subtitleCheckList = new SubtitleChecklist();    
QuestionChecklist questionChecklist = new QuestionChecklist(); 

foreach (var list in lists) 
{ 
    subtitleCheckList.IdChecklist = idChecklist; 
    subtitleCheckList.Subtitle = list.Subtitle; 

    db.subtitleCheckList.Add(subtitleCheckList); 
    db.SaveChanges(); 

    int idSubtitleChecklist = subtitleCheckList.Id; 

    for (int i = 0; i < list.Question.Length; i++) 
    { 
     questionChecklist.Question = list.Question[i]; 
     questionChecklist.IdSubtitle = idSubtitleChecklist; 

     db.QuestionChecklist.Add(questionChecklist); 
     db.SaveChanges(); 
    } 
} 
+1

你能解釋爲什麼它不起作用嗎?你調試了嗎?結果是什麼? – Marusyk

+0

你在哪裏設置idChecklist? – FailedUnitTest

+0

這是來自代碼的另一部分,在我的代碼中可以。 – Victor

回答

1

你在哪裏實例questionChecklist和subtitleCheckList?

它看起來像你一遍又一遍地在你的循環中修改相同的對象。

UPDATE 1:

移動:SubtitleChecklist subtitleCheckList = new SubtitleChecklist(); 外環內側和QuestionChecklist questionChecklist = new QuestionChecklist();到內迴路。

此外,你現在得到什麼結果?

+0

我做到了。我忘了把這個代碼。我的問題是循環。你有什麼主意嗎? – Victor

+0

答覆已更新。 – FailedUnitTest

+0

Yeap !!!!它工作得很好!非常感謝你!!!!!! – Victor

0

您循環訪問lists對象,但您可以爲其分配值並將所有其他內容都設置爲一個對象,而您在循環外定義的對象與循環無關。

+0

每個字幕都有很多問題。所以當我插入字幕時,我必須保留ID用於與字幕相關的問題。 – Victor