没有带有'IEnumerable <selectlistitem>'类型的键'Blah'的ViewData项目</selectlistitem>

时间:2009-05-17 06:31:34

标签: asp.net-mvc model-view-controller html-helper viewdata

此错误消息让我疯狂。

我在使用Html.ListBox和Html.DropDownList HtmlHelpers与ASP.NET MVC v1.0时得到它。填充列表工作正常 - 我可以查看它们等等 - 但是当我使用传递给Controller的FormCollection创建模型中的新记录来获取所选值时,会发生此错误。我已经尝试了几个不同的配置和代码安排,就其他几个帖子而言 - 没有乐趣。

希望有人能告诉我这是否是一个已知问题,以便我可以继续我的生活!如果有必要,我宁愿不必发布代码,但如果要求可以这样做。

哦,建议的解决方法/解决方案也不错; - )

TIA!

伯纳德。


好的,快速更新,我已经在回复中发布了三条评论,清除了我在这里做的详细信息。

我现在要分享另一个问题 - 我尝试过ScottGu的另一种推荐方法 - 实现ModelView。因此,当我这样做时,它基本上是相同的场景,但我得到一个“对象引用未设置为对象的实例”。我得到的同一个地方的错误“没有带有'IEnumerable'类型键'Blah'的ViewData项。”。

我开始认为这可能与EF的运作方式有关......

3 个答案:

答案 0 :(得分:2)

好的,sooo我显然是EF / MVC noob ......

虽然问题是通过我实际实现正确的异常管理来解决的...异常消息(当我实际开始捕获它时)是“两个对象之间的关系无法定义,因为它们附加到不同的ObjectContext对象。” 。所以我现在使用相同的ObjectContext进行所有数据访问,事情又回到正轨。

感谢关心,下次我会有一个更聪明的问题 - 承诺!

伯纳德。

答案 1 :(得分:0)

不知道你是如何编码的,人们很难识别出有问题的区域。阅读这个论坛帖子 - 再往下就有类似的错误。

http://forums.asp.net/p/1320426/2623986.aspx

答案 2 :(得分:0)

您可以再次在发布验证的相应发布方法中绑定您的选择列表。 例如,在控制器的create视图中有一个错误,你可以在create post方法中再次绑定下拉列表。