In meinem ASP.NET MVC Projekt habe ich eine polymorphe Sammlung, die ich rendern möchte - sagen wir, ein IEnumerable<ISomething>
wo die einzelnen Elemente eine Mischung aus verschiedenen Implementierungen von ISomething
sein können.Hat ASP.NET MVC etwas, das mit der DataTemplate-Funktion von WPF vergleichbar ist?
Ich möchte, dass diese Liste gerendert wird, wobei jeder konkrete Typ nach einer eigenen Vorlage rendert (vielleicht ein stark typisiertes ViewUserControl).
In WPF könnte ich DataTemplates angeben, die konkrete Typen automatisch an bestimmte Vorlagen binden. Kann ich etwas ähnliches in ASP.NET MVC tun?
Offensichtlich kann ich durch die Liste iterieren und eine Besetzung mit dem Schlüsselwort is
versuchen und dann viele if
Anweisungen verwenden, um die gewünschte Kontrolle zu rendern, aber ich hoffte auf etwas eleganteres (wie WPF).
Weil das bedeuten würde, dass UI-spezifischer Code in die ISomething-Schnittstelle eindringt. Ihr Vorschlag hat jedoch Vorteile auf der Ebene, auf der ich eine neue Schnittstelle definieren könnte, die die Objekte kapselt und ein View-Modell für jedes Objekt mit einer zugehörigen View-Kennung definiert (wie eine Methode, wie Sie es vorgeschlagen haben). Dies könnte funktionieren, ist aber immer noch ein wenig klobig im Vergleich zu WPF's Art, es zu tun. –