今天在研究MVC 2.0时自己写了一个demo,demo中采用的是linq to sql作为数据访问的方式,目的只想将某一个表中的数据查出来显示在页面上,自认为很简单的东西,结果却卡在了这样一个问题上: 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误消息: CS1579: “object”不包含“GetEnumerator”的公共定义,因此 foreach 语句不能作用于“object”类型的变量
这个问题困惑了我很久,上google找答案.结果出来的全是英文网站.好在自己英语水平还过得去.终于在翻看了十几个网站后找到解决方案,顿时欣喜不已,遂将解决办法写出来,以方便遇到相同问题的朋友! 先看我的代码:
Controller类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
{
var uList = new List < User > ();
using (var udc = new MvcSite.Models.UserDataContext())
{
uList = (from user in udc.User
select user).ToList();
}
return View(uList);
}
Views文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
< asp:Content ID ="Content1" ContentPlaceHolderID ="TitleContent" runat ="server" >
UMan
</ asp:Content >
< asp:Content ID ="Content2" ContentPlaceHolderID ="MainContent" runat ="server" >
< h2 > UMan </ h2 >
< table >
< tr >
< td > id </ td >
< td > name </ td >
</ tr >
<% foreach (var user in Model) { %>
< tr >
< td > <% = Html.Encode(user.id) %> </ td >
< td > <% = Html.Encode(user.name) %> </ td >
</ tr >
<% } %>
</ table >
</ asp:Content >
首先可以确认的是代码没有语法错误 值得注意的地方是Inherits="System.Web.Mvc.ViewPage"这句,它由系统自动生成,但因为它会在对集合进行foreach循环时会出我上面所说的问题
解决办法:将该句改为:Inherits="System.Web.Mvc.ViewPage<[你的数据映射所在命名空间].[实体类名/表名]>>" 此方法已通过测试!
虽然能够理解这么写的意图,但这种语法着实让人感到新鲜!欢迎高手提供更好的解决办法!