2016-03-15 2 views
0

Привет Я использую viewmodel, и в моем контроллере невозможно преобразовать список в объект.При использовании viewmodel невозможно преобразовать список в объекты

Вот мой ViewModel:

namespace SmartAdvertising.Backend.Models 
{ 
    public class DashboardModel 
    { 
     public Advert allAdvert { get; set; } 
     public Advert allAdvert2 { get; set; } 
    } 
} 

Контроллер:

public ActionResult Dashboard() 
     { 
      string email_uzivatele = (String)Session["email"]; 
      DashboardModel adverts = new DashboardModel(); 

      List<Advert> time = AdvertServiceLayer.Instance.SelectAllWith(email_uzivatele, "Reklama na určitou dobu"); 
      List<Advert> price = AdvertServiceLayer.Instance.SelectAllWith(email_uzivatele, "Reklama na určitou částku"); 
      adverts.allAdvert = time; 
      adverts.allAdvert2 = price; 
      return View(adverts); 
     } 

Вид:

@model IList<SmartAdvertising.Backend.Models.DashboardModel> 

@{ 
    ViewBag.Title = "Dashboard"; 
} 

<h1>@ViewBag.Title</h1> 

<div class="row"> 
    <div class="col-md-12 col-sm-12"> 
     <h2>Všechny reklamy na určitou dobu</h2> 


     <table class="table-hover" style="width:100%"> 
      <tr> 
       <th> 
        Název reklamy 
       </th> 
       <th> 
        Typ reklamy 
       </th> 
       <th> 
        Cena reklamy 
       </th> 
       <th> 
        Email uživatele 
       </th> 

       <th> 
        Datum začátku 
       </th> 
       <th> 
        Datum konce 
       </th> 
       <th> 

       </th> 
      </tr> 

      @foreach (var item in Model) 
      { 
       <tr> 
        <td> 
         @item.nazev_reklamy 
        </td> 
        <td> 
         @item.typ_reklamy 
        </td> 
        <td> 
         @item.cena_reklamy 
        </td> 
        <td> 
         @item.email_uzivatele 
        </td> 
        <td> 
         @item.datumz 
        </td> 
        <td> 
         @item.datumk 
        </td> 

       </tr> 
      } 
     </table> 

    </div> 

    <div class="col-md-12 col-sm-12"> 
     <h2>Všechny reklamy na určitou částku</h2> 


     <table class="table-hover" style="width:100%"> 
      <tr> 
       <th> 
        Název reklamy 
       </th> 
       <th> 
        Typ reklamy 
       </th> 
       <th> 
        Cena reklamy 
       </th> 
       <th> 
        Email uživatele 
       </th> 


       <th> 

       </th> 
      </tr> 

      @foreach (var item in Model) 
      { 
       <tr> 
        <td> 
         @item.nazev_reklamy 
        </td> 
        <td> 
         @item.typ_reklamy 
        </td> 
        <td> 
         @item.cena_reklamy 
        </td> 
        <td> 
         @item.email_uzivatele 
        </td> 

       </tr> 
      } 
     </table> 

    </div> 

    <div class="col-md-12 col-sm-12"> 

    </div> 
</div> 

Но ввиду он дает эту ошибку:

Error 1 foreach statement cannot operate on variables of type 'SmartAdvertising.Backend.Models.DashboardModel' 
because 'SmartAdvertising.Backend.Models.DashboardModel' does not contain a public definition for 'GetEnumerator' 

И в контроллере эти две строки:

adverts.allAdvert = time; 
adverts.allAdvert2 = price; 

дают мне эту ошибку:

Error 3 Cannot implicitly convert type 'System.Collections.Generic.List<SmartAdvertising.Entities.Advert>' 
to 'SmartAdvertising.Entities.Advert' 
+0

Ошибки ясны. Свойства в вашей модели не являются типами списков. – Balde

+2

Вы пытаетесь назначить список вещей для свойства, которое принимает только одну вещь. И ваша модель взгляда не является списком чего-либо, поэтому, конечно, вы не можете перебирать ее. – Amy

+0

Но когда я изменяю в своих объектах viewmodel в список: public List allAdvert {get; задавать; } public List allAdvert2 {get; задавать; } это то, что дает мне ту же ошибку: foreach оператор не может работать с переменными типа «SmartAdvertising.Backend.Models.DashboardModel», потому что «SmartAdvertising.Backend.Models.DashboardModel» не содержит общедоступного определения для «GetEnumerator», –

ответ

1

свойства в модели должны быть в списке Тип:

public class DashboardModel 
{ 
    public List<Advert> allAdvert { get; set; } 
    public List<Advert> allAdvert2 { get; set; } 
} 

Кроме того, вы должны итерации по свойствам модели:

@foreach (var item in Model.allAdvert) 
+0

i изменен в список, но все же он дает мне ту же ошибку: view foreach не может работать с переменными типа «SmartAdvertising.Backend.Models.DashboardModel», потому что «SmartAdvertising.Backend.Models.DashboardModel» не содержит общедоступного определения для 'GetEnumerator' –

+0

Вы должны перебирать свойства модели. См. Полный ответ. – Balde

+0

Спасибо, что сейчас он работает –

Смежные вопросы