【问题标题】:MVC2 ViewData ProblemsMVC2 ViewData 问题
【发布时间】:2009-12-30 15:03:34
【问题描述】:

我正在尝试通过 ViewData 将一些项目的列表传递给视图以创建下拉列表。这应该不会太难,但我是 MVC 新手,所以我可能遗漏了一些明显的东西。

控制器将列表分配给 ViewData:

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

视图会尝试将其呈现到下拉列表中:

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

但是,当我运行它时,我得到了这个错误: 没有具有键“Location”的“IEnumerable”类型的 ViewData 项。

任何想法为什么这不起作用?另外,它不应该寻找关键的“ImageLocations”而不是位置吗?

【问题讨论】:

    标签: model-view-controller asp.net-mvc-2


    【解决方案1】:

    如果你使用:

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

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

    你的生活会轻松很多。

    在您的示例(ImageLocatons => ImageLocations)中设置 ViewData 时,还要检查拼写错误(缺少 i)。这会导致您传递给 DropDownList 的第二个参数为 null。这将导致 MVC 引擎搜索 Location。

    【讨论】:

    • 哇。我有一个拼写错误。我正在使用您现在建议的其他方法。非常感谢!
    • 不错的收获。 +1查看错字。即使您指出了,我也不得不重新阅读几次:-)
    【解决方案2】:

    您的 ViewData 是否可能已重置?

    尝试在您发出下拉列表的行中的视图中放置一个断点。
    然后快速查看 ViewData["ImageLocations"]。

    当视图试图使用它时,确保这里有一个值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多