2012-10-04 31 views
1

我有一個Band標題列表,我希望爲它們中的每一個添加一個SelectList,具體取決於BandID。ViewData [var]由相同的SelectList填充,不是不同的

所以首先我得到的名單: -

List<BandQuestionTitles> bandQuestTitles = viewModel.PopulateBandQuestionTitles(); 

,然後我對BandQuestionTitles一個循環從的SelectList填充計算機[VAR]: -

foreach (var bandQuestTitleItem in bandQuestTitles) 
    { 
     //populate the dropdownlist 
     string strViewDataString = bandQuestTitleItem.BandQuestTitlesText + "Data"; 
     ViewData[strViewDataString] = new SelectList(viewModel.bandQuestionList.Where(p => p.BandQuestTitleID == bandQuestTitleItem.BandQuestTitlesID), "BandQuestID", "BandQuestText"); 
    } 

然而,對於某些原因,雖然我得到正確的7 ViewData [「」],我總是得到相同的SelectList

當我硬編碼它,它工作正常: -

ViewData["PersonalData"] = new SelectList(viewModel.bandQuestionList.Where(p => p.BandQuestTitleID == 1), "BandQuestID", "BandQuestText"); 
ViewData["BusinessData"] = new SelectList(viewModel.bandQuestionList.Where(p => p.BandQuestTitleID == 2), "BandQuestID", "BandQuestText"); 

我在循環中做了什麼錯誤?

感謝您的幫助和時間

+0

你如何渲染視圖上的SelectList?例如@ Html.DropDownList(「PersonalData」,「--Select--」)? – StuartLC

+0

@ Html.DropDownList(「D_Personal」,ViewData [「PersonalData」] as SelectList,new {@class =「BigDropdowns」}) – Johann

+0

討厭問這個問題,但是你確定BandQuestTitlesID與所有bandQuestTitleItem實例不一樣在bandQuestTitles? – JTMon

回答

1

看起來就像當你認爲它是你的LINQ不被執行的問題。從MS

new SelectList(viewModel.bandQuestionList.Where(p => p.BandQuestTitleID == bandQuestTitleItem.BandQuestTitlesID)**.ToList()**, "BandQuestID", "BandQuestText"); 

相關文章:

試試這個

http://msdn.microsoft.com/en-us/library/bb738633.aspx

在返回值的序列的查詢,查詢變量本身從不保存查詢結果和只存儲查詢命令。延遲查詢的執行直到查詢變量在foreach或For Each循環中迭代。這被稱爲延期執行;也就是說,查詢執行發生在構建查詢後的一段時間。

換句話說,當查詢執行bandQuestTitleItem.BandQuestTitlesID將被分配到最後(第7)ID您的收藏中的所有查詢。

添加.ToList()將導致查詢立即執行。

+0

優秀的迴應!謝謝瑞恩 – Johann