2015-03-12 1 views
0

Im создавая при получении типа Расположения приложенияМодель элемент передается в словарь типа 'System.Collections.Generic.List [CA1API.Models.Weather]

Я получаю эту ошибку

Model item passed into the dictionary is of type 'System.Collections.Generic.List[CA1API.Models.Weather]', but this requires model item type 'System.Collections.Generic.IEnumerable [CA1API.Models.Location]'. 

Я создал свой ViewModel, который выглядит следующим образом пространства имен CA1API.Models

{ 
    public enum County 
    { 
     Ireland, 
     England, 
     Iceland 
    } 

    public class Location 
    { 
     public int LocationID { get; set; } 
     [Display(Name = "Location")] 
     public County LocationName { get; set; } 
     public double Lat { get; set; } 
     public double Lon { get; set; } 
     public int WeatherID { get; set; } 
     public List<Weather> Weathers { get; set; } 

    } 
} 

мой контроллер выглядит следующим образом

public class HomeController : Controller 
    { 
     private WeatherDb db = new WeatherDb(); 
     public ActionResult Index() 
     { 

      return View(db.Weathers.ToList()); 
     } 
    } 

мой взгляд выглядит следующим образом

@model IEnumerable<CA1API.Models.Location> 
<div class="row"> 
    <div class="col-md-2"> 
     <div class="panel panel-success"> 
      <div class="panel-heading">County</div> 
      <div> 
       <div class="panel-body" style="overflow-x:hidden; height:300px;"> 
        @foreach (var item in Model) 
        { 
         <p>modelItem=>item.County</p> 
        } 
       </div> 
      </div> 
     </div> 
    </div> 
+0

Можете ли вы добавить верхнюю часть индекса просмотра? строка, начинающаяся с '@model ...'? – adricadar

+2

У вас есть '@model IEnumerable ' - но ваша передача 'IEnumerable '. Измените представление на '@model IEnumerable ' (Не совсем уверен, что должно отображаться в представлении, но типы должны совпадать) –

ответ

0

Ваш IndexView использовать @model IEnumerable<CA1API.Models.Location> как модели и вы пытаетесь передать @model List<CA1API.Models.Weather> к View.

Потому что модель, которую вы пытаетесь передать, не наследует, или это не та модель, которая ожидает получения, она бросает исключение.

Модель элемент передается в словарь типа 'System.Collections.Generic.List [CA1API.Models.Weather], но это требует модели типа элемента «System.Collections.Generic.IEnumerable [ CA1API.Models.Location].

0

Ошибка довольно ясная. Вы передаете List<Weather>, где вид ожидает IEnumerable<Location>.

Возможно, вы имели в виду return View(db.Locations.ToList()); вместо db.Weathers.

+0

Спасибо, этот ответ сработал для меня – user3529620

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