2013-08-13 7 views
1

Je veux afficher 4 listes différentes à partir de 4 tables différentes, j'ai créé un Partial View pour 4 tables dans leur contrôleur respecté, mais il n'est pas rendu, ce qui donne une erreur;ASP.NET MVC 4, vue partielle

L'élément de modèle passé dans le dictionnaire est de type 'Medical_App.Models.MA_Area', mais> dictionnaire a besoin d'un élément de modèle de type> « [System.Collections.Generic.IEnumerable`1 Medical_App.Models. MA_Area] '.

S'il existe un autre moyen/alternative de le faire, veuillez partager.

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

Pouvez-vous montrer comment vos contrôleurs et vues? – SWeko

+0

Postez vos opinions. Vous passez une instance unique en tant que modèle alors que votre vue est fortement typée en une séquence. –

+0

un tutoriel sur ce sujet – user1404954

Répondre

1

Il semble que vous devez passer le bon modèle à la vue partielle. Par défaut, l'appel d'une vue partielle transmet le modèle que possède la vue parent.

Ainsi, si vous transmettez les 4 listes à la vue principale, chaque appel partiel doit inclure l'objet IEnumarable correct pour la vue.

Vous pouvez passer d'un modèle avec un appel partiel comme celui-ci:

@Html.Partial("_partialName", model) 

Hope this helps

0

Vous avez passé la liste des éléments à savoir (liste) de votre contrôleur/vue. Mais vous créez les vues en mode pertial et acceptez un seul élément du modèle, à savoir Medical_App.Models.MA_Area, en haut de votre vue en mode pertial (@model Medical_App.Models.MA_Area). Transmettez une seule instance de modèle à partir de votre contrôleur/vue ou acceptez la liste de modèles dans votre vue pertial.

1

Vous passez une collection mais essayez d'afficher une instance unique. Vous pouvez avoir besoin de quelque chose comme:

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

Ensuite, vous aurez besoin de prouver la structure de mise en page pour chaque élément.

Bonne chance

Questions connexes