2011-09-21 104 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

相關問題