2009-12-30 32 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”]。

确保在视图试图使用它时有一个值。