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
Dies ist mein Index
view
Meine Teilansicht _ListTodos
lautet wie folgt:
Mein LoginModel
hat folgendes:
Die Methode HomeController
Index()
:
Jede Hilfe wird sehr geschätzt, danke.
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.
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:
und ändern Sie dann Ihre Indexaktionsmethode:
%Vor%In der Ansicht tun Sie dies:
%Vor%Tags und Links asp.net-mvc asp.net asp.net-mvc-4 model asp.net-mvc-partialview