2017-01-26 2 views
-2

Ich versuche, einige Beiträge aus der Datenbank zu bekommen. Es funktioniert gut, wenn Sie auf der Indexseite des Posts öffnen, aber nicht im Hauptindex. Als Teilansicht habe ich eine PostViewModel für die PostModel erstellt.Iterieren in einer Teilansicht mit dem Modell funktioniert nur, wenn ich keine Teilansicht

Heres der Code:

In Index.cshtml (Post):

@model IEnumerable<Project.Models.Post> 

@foreach (var item in Model) { @item.Name } 

In Index.cshtml (Haupt):

@model Project.Models.ViewModels.PostViewModel 

@Html.Partial("~/Views/Posts/Index.cshtml", Model) 

Als ich das Projekt ausführen, Es klagt über eine System.NullReferenceException in der foreach Schleife.

Wie kann ich dieses Problem lösen?

+0

ist Ihr Code ' – Saravanan

+0

Ich muss es sein' @model IEnumerable soll aber aus irgendeinem Grund scheinen – JaneTheDotNet

+0

ist, dass ein Teil des Codes nicht hier, um diesen Teil: @model IEnumerable JaneTheDotNet

Antwort

0

Wenn Sie Model aus der Hauptansicht an @Html.Partial übergeben, ist es nicht in der Lage, es in IEnumerable<Post> zu konvertieren, was von der Teilansicht erwartet wird, deshalb sehen Sie die NullReferenceException.

Wenn Sie eine Eigenschaft in der PostViewModel Klasse, die Sammlung von Post stellt dann sollten Sie versuchen, dass in der Let @Html.Partial

vorbei sagen Sie eine Eigenschaft Beiträge vom Typ List<Post> in Klasse PostViewModel haben, dann sollten Sie es verwenden wie folgt.

@Html.Partial("~/Views/Posts/Index.cshtml", Model.Posts) 
0

Wenn die Teilansicht der Modellvariable „genannt“ wird intern gesetzt mit

Model = instance as IEnumerable<Project.Models.Post>; 

Die Instanz, die Sie vorbei ist vom Typ Project.Models.Post so kann es nicht zu IEnumerable<Project.Models.Post> umgewandelt werden. Und das ist der Grund, warum Model innerhalb der Teilansicht null ist.

Verwandte Themen