2009-12-30 44 views
3

我想通過ViewData將一些項目的列表傳遞給視圖來創建一個下拉列表。這不應該太難,但我是MVC的新手,所以我可能會錯過某些明顯的東西。MVC2 ViewData Problems

控制器分配列表中的ViewData:

ViewData["ImageLocatons"] = new SelectList(gvr.ImageLocations); 

和視圖嘗試將其渲染成一個下拉列表:

<%= Html.DropDownList("Location", ViewData["ImageLocations"] as SelectList) %> 

然而,當我運行它,我得到這個錯誤: 沒有類型爲「IEnumerable」的ViewData項目具有「位置」關鍵字。

任何想法爲什麼這不起作用?另外,它不應該尋找關鍵的「ImageLocations」,而不是位置?

回答

7

如果你使用:

ViewData["Location"] = new SelectList(gvr.ImageLocations); 

<%= Html.DropDownList("Location") %> 

你的生活會方便很多。

還可以在您的示例中設置ViewData(ImageLocatons => ImageLocations)時檢查輸入錯誤(缺少i)。這會導致您傳遞給DropDownList的第二個參數爲null。這將導致MVC引擎搜索位置。

+0

哇。我有拼寫錯誤。我正在使用您現在建議的其他方法。非常感謝! – Joe 2009-12-30 15:22:12

+0

好的。 +1查看錯字。即使您指出它,我也必須重讀幾遍:-) – 2009-12-30 23:56:26

0

您的ViewData有可能被重置?

嘗試在放置下拉列表的行中放置斷點。
然後快速觀看ViewData [「ImageLocations」]。

確保在視圖試圖使用它時有一個值。