Nach dem, was ich gelesen habe, soll ich ViewModels verwenden, um meine Ansichten in MVC, anstatt das Modell direkt zu füllen. Dadurch kann ich nicht nur den Inhalt des Modells, sondern auch andere Informationen wie den Anmeldestatus usw. an die Ansicht übergeben, anstatt ViewBag oder ViewData zu verwenden. Ich habe die Tutorials verfolgt und sowohl ein Modell als auch ein Viewmodel erfolgreich an die View gesendet. Das ursprüngliche Problem, das ich hatte, war, dass ich eine paginierte Ansicht benötigte, was einfach ist, wenn man ein Modell alleine passiert, aber schwierig wird, wenn man ein Ansichtsmodell passiert.Wie umgehe ich die Einschränkungen dessen, was MVC-CORE-Controller an die Ansicht weitergeben können?
Mit einem Modell der
public class Instructor {
public string forename { get; set; }
public string surname { get; set; }
}
und ein Ansichtsmodell von
public class InstructorVM {
public Instructor Instructors { get; set; }
public string LoggedIn { get; set; }
}
ich das reine Modell Instructor
eine paginierte Liste der Lehrer schaffen kann, aber ich kann nicht InstructorVM
zur Ansicht übergeben und paginieren Sie es, da es andere Eigenschaften gibt, die in der Paginierung LoggedIn
nicht erforderlich sind. Wenn ich InstructorVM.Instructors
an die Ansicht übergebe, bekomme ich die Paginierung, aber bekomme nicht die LoggedIn
und da dies nur das Modell ist, habe ich das wohl direkt durchgegangen.
Eine Alternative, die vorgeschlagen wurde, war das Viewmodel in eine Liste zu konvertieren/erweitern, etc. zu jagen, die ein Objekt wie diese erzeugen würde, das die Ansicht
instructor.forename = "dave", instructor.surname = "smith", LoggedIn="Hello brian"
instructor.forename = "alan", instructor.surname = "jones", LoggedIn="Hello brian"
instructor.forename = "paul", instructor.surname = "barns", LoggedIn="Hello brian"
wo der LoggedIn
Wert in jeder Zeile wiederholt wird, übergeben wird und dann in der Zeile abgerufen wird Model[0].LoggedIn
Offensichtlich ist dieses Problem verursacht, weil Sie nur ein Objekt passieren kann wieder von einem Verfahren, entweder Instructor
, InstructorVM
, List<InstructorVM>
usw.
Ich versuche herauszufinden, die beste Option, um mir Paginierung (auf einen Teil des zurückgegebenen Objekts) von einem Viewmodel geben, während nicht alles andere im Viewmodel repliziert.
Ein Vorschlag war, ein JavaScript-Framework wie React/Angular zu verwenden, um die Seite in eine MVVM-Art der Dinge zu zerlegen, das Problem ist, dass trotz der Suche nach Vorschlägen und Lesen 1001 "Best JS-Framework" Listen über Google, sie alle gehen davon aus, dass ich bereits alle Frameworks erlernt habe und somit aus den verfügbaren Optionen den am besten geeigneten auswählen können.
Wenn alles, was ich tun möchte, zeigt eine Zeichenfolge und eine paginierte Liste aus einem Ansichtsmodell in einer Ansicht. An diesem Punkt ist es mir egal, wie, es ist mir egal, ob ich ein JS-Framework lernen muss oder ob ich es nur mit MVC-Core machen kann, aber kann mir jemand sagen, wie ich das machen kann, was ich einfach machen kann ASP.NET? Wenn es ein "JS-Framework" ist, welches? Danke
Ich habe die Microsoft-Dokumentation von https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro durchlaufen und deshalb bin ich hier gelandet. Gemäß ihrem Beispiel erfolgt die Paginierung im Backend-Controller, wobei die relevante paginierte Teilmenge der Daten des Modell-Instruktors oder die Daten des View-Modells "InstructorVM.Instructor" vom Controller an die Ansicht übergeben werden. Die Übergabe des paginierbaren Teils des Viewmodels 'InstructorVM.Instructor' vom Controller zur Ansicht verliert die anderen Eigenschaften des Viewmodels, in diesem Beispiel' LoggedIn' – Glyn
Die Seitennummerierung betrifft Teilmengen von Daten, ja, ich weiß, dass mein Problem nicht die Seitennummerierung ist Es werden das Ansichtsmodell, die paginierte Teilmenge und alle anderen Eigenschaften für die Ansicht bereitgestellt, was die Dokumentation nicht tut. Und andere Beispiele sind ähnlich, paginate-a-model/don't-paginate-a-viewmodel, daher bin ich hier – Glyn