【发布时间】:2010-03-01 22:44:08
【问题描述】:
我目前使用的是 ASP.NET MVC 2.0 RC2,最近从 1.0 版迁移过来。
我注意到我的一些观点不再有效。我有继承自强类型IEnumerable 的视图,如下所示:
Inherits="System.Web.Mvc.ViewPage<IEnumerable<MyProject.Models.MyType>>"
过去,我在我的视图中列举了这样的模型:
<% foreach (var item in Model) { %>
但这不再有效。我在浏览器中收到错误:
foreach 语句不能对“object”类型的变量进行操作,因为“object” 不包含“GetEnumerator”的公共定义
我可以通过执行必要的强制转换来修复它:
<% foreach (MyType item in (IEnumerable<MyType>)Model) { %>
但这很丑陋,它表明行为发生了变化,所以我需要知道原因。
我检查了一下,ViewPage.Model 确实被定义为object,所以我想知道这怎么能像以前那样工作。在 ASP.NET MVC 1.0 中它也被定义为 object。
什么给了?
注意:我已将 MVC 源代码加载到我的项目中。那会有什么不同吗?是否有一些在运行时注入的元数据使这项工作能够通过查看源代码中的object 定义来阻止这样做?
【问题讨论】:
标签: c# asp.net-mvc compiler-errors