Оператор foreach не может работать с переменными типа '', потому что '' не содержит открытого определения для 'GetEnumerator' - PullRequest
2 голосов
/ 21 сентября 2011

Я получил ошибку, подобную этой. Описание: Произошла ошибка во время компиляции ресурса, необходимого для обслуживания этого запроса.Пожалуйста, просмотрите следующие конкретные подробности ошибки и измените свой исходный код соответствующим образом.

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 Framework.

Ответы [ 2 ]

5 голосов
/ 21 сентября 2011

Вам необходимо связать коллекцию как модель. Проверьте это сообщение для деталей: http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

View

<%@ 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

2 голосов
/ 21 сентября 2011

Предположительно, что вы пытаетесь сделать:

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

Хотя в этом трудно быть уверенным.

Если вам требуется синтаксис, который вы использовали, то Model должен быть объектом класса с методом GetEnumerator ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...