我正在尝试通过ViewData将一些项目列表传递给视图以创建下拉列表。这应该不会太难,但我是MVC的新手,所以我可能会遗漏一些明显的东西。
控制器将列表分配给ViewData:
ViewData["ImageLocatons"] = new SelectList(gvr.ImageLocations);
并且视图尝试将其呈现到下拉列表中:
<%= Html.DropDownList("Location", ViewData["ImageLocations"] as SelectList) %>
然而,当我运行它时,我收到此错误: 没有“IEnumerable”类型的ViewData项具有“位置”键。
为什么这不起作用的任何想法?此外,它不应该寻找关键的“ImageLocations”而不是位置?
答案 0 :(得分:7)
如果您使用:
ViewData["Location"] = new SelectList(gvr.ImageLocations);
和
<%= Html.DropDownList("Location") %>
你的生活会轻松得多。
在示例中设置ViewData时,请查看拼写错误(缺少i
)(ImageLocatons =&gt; ImageLocations)。这会导致您传递给DropDownList的第二个参数为null
。这将导致MVC引擎搜索位置。
答案 1 :(得分:0)
您的ViewData可能已重置吗?
尝试在发出下拉列表的行上的视图中放置一个断点 然后快速观察ViewData [“ImageLocations”]。
当视图尝试使用它时,请确保此处有值。