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);
}
{
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>
<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<[你的数据映射所在命名空间].[实体类名/表名]>>" 此方法已通过测试!
虽然能够理解这么写的意图,但这种语法着实让人感到新鲜!欢迎高手提供更好的解决办法!

浙公网安备 33010602011771号