2013-08-13 8 views
1

Я хочу отобразить 4 разных списка из 4 разных таблиц, я создал Partial View для 4-х таблиц в их уважаемом контроллере, но не получал визуализации, что дало ошибку;ASP.NET MVC 4, Partial View

Модель элемент передается в словарь типа «Medical_App.Models.MA_Area», но это> Словарь требует модель элемента типа> «System.Collections.Generic.IEnumerable`1 [Medical_App.Models. MA_Area].

Если есть другой способ/альтернатива этому, пожалуйста, поделитесь.

public PartialViewResult AreaList() 
    { 
     var result = db.MA_Area.OrderBy(d => d.AreaName); 
     return PartialView(result); 
    } 



@model IEnumerable<Medical_App.Models.MA_Area> 
     @Html.DisplayNameFor(model => model.CityId) 
     @Html.DisplayNameFor(model => model.AreaName) 

@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.CityId) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.AreaName) 
    </td> 
    <td> 
     @Html.ActionLink("Edit", "Edit", new { id=item.AreaId }) | 
     @Html.ActionLink("Details", "Details", new { id=item.AreaId }) | 
     @Html.ActionLink("Delete", "Delete", new { id=item.AreaId }) 
    </td> 
</tr> 

}

+0

Можете ли вы показать, как ваши контроллеры и виды? – SWeko

+0

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

+0

любой учебник по этой теме – user1404954

ответ

1

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

Итак, если вы передаете 4 списка на главный вид, тогда каждый частичный вызов должен включать в себя правильный объект IEnumarable для представления.

Вы можете передать модель с частичным вызовом, как это:

@Html.Partial("_partialName", model) 

Надеется, что это помогает

0

Вы прошли список элементов, т.е. (List) из контроллера/зрения. Но вы создаете pertial views и принимаете единственный элемент модели, то есть Medical_App.Models.MA_Area, в верхней части вашего pertial view (@model Medical_App.Models.MA_Area). Передайте один экземпляр модели из вашего контроллера/просмотра или примите список моделей в своем представлении.

1

Вы проходили коллекцию, но пытались показать один экземпляр. Вам может понадобиться что-то вроде:

@model IEnumerable<Medical_App.Models.MA_Area> 
@{foreach(var item in Model) 
{ 
@Html.DisplayNameFor(model => item .CityId) 
@Html.DisplayNameFor(model => item .AreaName) 
} 

Тогда вам нужно будет доказать структуру макета для каждого элемента.

Удача