asp.net mvc中使用LINQ TO SQL查询数据集使用foreach时发现的问题:CS1579

今天在研究MVC 2.0时自己写了一个demo,demo中采用的是linq to sql作为数据访问的方式,目的只想将某一个表中的数据查出来显示在页面上,自认为很简单的东西,结果却卡在了这样一个问题上: 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。

编译器错误消息: CS1579: “object”不包含“GetEnumerator”的公共定义,因此 foreach 语句不能作用于“object”类型的变量

这个问题困惑了我很久,上google找答案.结果出来的全是英文网站.好在自己英语水平还过得去.终于在翻看了十几个网站后找到解决方案,顿时欣喜不已,遂将解决办法写出来,以方便遇到相同问题的朋友! 先看我的代码:

Controller类

代码
        public ActionResult UMan()
        {
            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文件

代码
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<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<[你的数据映射所在命名空间].[实体类名/表名]>>" 此方法已通过测试!

虽然能够理解这么写的意图,但这种语法着实让人感到新鲜!欢迎高手提供更好的解决办法! 

 

 

 

 

 

 

 

 


posted on 2010-08-17 14:04  祈祷  阅读(1715)  评论(6)    收藏  举报