ASP.net MVC4: Verwenden eines anderen Modells in einer Teilansicht?

8

Ich lerne gerade ASP.net MVC, also bitte ertragen Sie mit mir, wenn ich schlecht bin, mein Problem zu erklären.

Ist es möglich, ein anderes Modell in einer Teilansicht zu verwenden als das, was in der Ansicht vererbt wird?

Meine Ansicht Index erbt aktuell LoginModel , was sich auf die Autorisierung von Benutzern bezieht. Sobald ein Benutzer autorisiert ist, möchte ich, dass Index die Liste von todos anzeigt, die der Benutzer hat. todos werden über LINQ abgerufen.

Also möchte meine partielle Ansicht System.Web.Mvc.ViewPage<IEnumerable<todo_moble_oauth.Models.todo>> erben, aber ich erhalte einen Fehler, wenn ich folgendes benutze: 'Das Modellelement, das an das Wörterbuch übergeben wurde, ist vom Typ

%Vor%

Dies ist mein Index view

%Vor%

Meine Teilansicht _ListTodos lautet wie folgt:

%Vor%

Mein LoginModel hat folgendes:

%Vor%

Die Methode HomeController Index() :

%Vor%

Jede Hilfe wird sehr geschätzt, danke.

    
Neil 22.05.2013, 17:19
quelle

1 Antwort

6

Sicher kannst du das tun:

%Vor%

Übergeben Sie den userTodos als Parameter an den partiellen Helfer.

Der Fehler tritt auf, weil Sie eine Liste von Todos an die Indexseite / -ansicht mit return View(todos); in der Index Aktionsmethode zurücksenden. Die Indexseite benötigt ein LoginModel -Objekt anstelle eines IEnumerable von Todo-Objekten.

%Vor%

Um dies zu lösen, müssen Sie die Art ändern, wie Sie todos übergeben. Da Ihre Index Seite eine LoginModel erhält, können Sie dieser Klasse eine Todos Eigenschaft wie folgt hinzufügen:

%Vor%

und ändern Sie dann Ihre Indexaktionsmethode:

%Vor%

In der Ansicht tun Sie dies:

%Vor%     
Leniel Macaferi 22.05.2013, 17:23
quelle