2011-09-21 103 views
2

我遇到类似错误 说明:编译服务此请求所需的资源时发生错误。请查看以下具体的错误细节并适当修改您的源代码。foreach语句无法对类型为''的变量进行操作,因为''不包含'GetEnumerator'的公共定义

Compiler Error Message: CS1579: foreach statement cannot operate on variables of type 'EventListing.Models.EventInfo' because 'EventListing.Models.EventInfo' does not contain a public definition for 'GetEnumerator' 

Source Error: 

Line 106:    </th> 
Line 107:   </tr> 
Line 108:   <% foreach (var model in Model) 
Line 109:    { %> 
Line 110:   <tr> 

型号

public static List<EventInfo> EventList() 
     { 
      var list = new List<EventInfo>(); 
      Dbhelper DbHelper = new Dbhelper(); 
      DbCommand cmd = DbHelper.GetSqlStringCommond("SELECT * FROM WS_EVENTINFO"); 
      DbDataReader Datareader = DbHelper.ExecuteReader(cmd); 
      while (Datareader.Read()) 
      { 
       EventInfo eventinfo = new EventInfo() 
       { 
        EVENT_ID = Convert.ToInt32(Datareader[ 

查看页面

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<EventListing.Models.EventInfo>" %> 
<% foreach (var model in Model) 
       { %> 
      <tr> 
       <td> 
        <%= Html.ActionLink(Model.TITLE,"Detail", new {id = Model.EVENT_ID})%> 

如何解决这个问题,我使用MVC2框架。

回答

2

想必你正在尝试做的是:

foreach(var model in Model.EventList()) {..} 

虽然难以肯定。

如果您需要使用的语法,那么Model必须是具有GetEnumerator()方法的类的对象。

+0

你能简单解释一下,因为我是新来这个技术 – Sathish

5

您需要将集合绑定为模型。检查这个职位的详细信息:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

查看

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IList<EventListing.Models.EventInfo>>" %> 

控制器

public ActionResult List() 
{ 
    return this.View(EventList()); 
} 

或者使用一些其它类型的模型,并在其中定义属性List<EventInfo> Events。然后在下面的方式迭代:

<% foreach (var model in Model.Events) 
    { %> 

此外,Visual Studio可以为你做到这一点:

enter image description here

enter image description here

+0

这有问题吗?没有得到它 – Samich

+0

Samich,你可以简单地解释一下, – Sathish

+0

你需要绑定一个项目列表,所以你的模型应该是集合,或者你的模型应该是容器类型,它具有与你的'EventInfo'集合的属性。 – Samich

相关问题