2015-07-20 7 views
-3

Вот как я сделал предыдущий пост, как вы можете видеть здесь.Устранение проблем с foreach в моем mvc

must retrieve the list from the database

Я попытался сделать мой Еогеасп, которые были описаны ранее. но это создает проблемы для того, чтобы не запускать мой foreach, пока вы делаете ошибку.

Index.cshtml

@foreach (var u in Model) 
{ 
    <div class="col-md-6 col-sm-6"> 
     <div class="plan"> 
      <h3>@u.Name<span>[email protected]</span></h3> 
      <p>@u.Text</p> 
     </div> 
    </div> 
} 

и undervisningController.cs

// GET: Undervisning 
    public ActionResult Index() 
    { 

     DatabaseClasseDataContext db = new DatabaseClasseDataContext(); 

     var model = db.Packages.ToList(); 

     return View(model); 
    } 

И верх на index.cshtml есть я:

@model MentorOrdblind_MVC.Models.Undervisning.Undervisning 

Модель Undervisning.cs

public class Undervisning 
{ 

    public string Name { get; set; } 
    public decimal Price { get; set; } 
    public int Hours { get; set; } 
    public string Text { get; set; } 

} 
+1

'@model .... Undervisning' предложить единый объект, а не коллекции, так что вы не можете перебирать его. Какая у вас ошибка? –

+2

Просьба уточнить вопрос. Попытайтесь описать проблему, получаете ли вы описание или исключение ошибок? –

+0

@StephenMuecke OP может перебирать его, если 'Undervisning' реализовать' IEnumerable' – Grundy

ответ

0

Вы передаете ваш взгляд List<T> но ваша модель не является типом IEnumerable. Таким образом, ваш взгляд ожидает только одного объекта типа Undervisning, а не коллекции.

Используйте это:

@model IEnumerable<MentorOrdblind_MVC.Models.Undervisning.Undervisning> 
+1

@ Grundy Я не следую. Вид ожидает только один объект, а не сбор. Если свойства внутри 'Undervisning' являются коллекциями, мы должны увидеть модель, чтобы ответить. вызывая 'Packages.ToList()' и непосредственно присваивая это модели, подразумевает, что это коллекция, а не один объект. –

+0

, если класс 'Undervisning' реализует' IEnumerable', то один объект равен коллекции и может быть итерабельным с 'foreach' – Grundy

+0

@Grundy. Эта строка кода' var model = db.Packages.ToList(); 'прямо подразумевает, что модель теперь является «списком ' Так что если 'Undervisning' является типом' IEnumerable', то теперь у него есть 'List >'. Это означает, что у его представления все равно должна быть декларация 'IEnumerable'. –

0

Изменить модель delcaration на:

@model IEnumerable<MentorOrdblind_MVC.Models.Undervisning.Undervisning> 

На данный момент ваша модель один класс, а не список объектов

+0

, но, возможно, 'Undervisning' class реализовать' IEnumerable' :-) – Grundy

+1

Эта строка var model = db.Packages.ToList(); прямо говорит, что модель представляет собой список –

+0

, теперь его giv me ошибка: элемент модели, переданный в словарь, имеет тип «System.Collections.Generic.List'1 –

0

Всегда имейте в виду, что передается из действия контроллера для просмотра. Если вы передадите только модель из действия, используйте ссылку модели в соответствующем представлении действия. Если вы передадите List, то используйте представление модели IEnumerable в представлении.

If you pass list from action then in the view use: 
@model IEnumerable<your model> in the top as reference 
If you pass model without a list then use: 
@model your model 

В вашем случае вы передаете список, поэтому используйте IEnumerable вашего желаемого класса модели.

Благодаря