2010-12-12 10 views

Antwort

8

Wenn Sie mehrere Modelle übergeben müssen, erstellen Sie ein allumfassendes Modell, bei dem die kleineren Modelle als Eigenschaften hängen bleiben.

Angenommen, Sie werden eine Seite zum Verwalten von Benutzergruppen für Ihre App anzeigen. Sie müssten wahrscheinlich eine IEnumerable<UserDisplayModel> und auch eine IEnumerable<GroupDisplayModel> an die Ansicht übergeben. Erstellen Sie ein neues Display Modell wie folgt aus:

class GroupManagementDisplayModel 
{ 
    public IEnumerable<UserDisplayModel> Users { get; set; } 
    public IEnumerable<GroupDisplayModel> Groups { get; set; } 
} 

Pass Instanzen dieses Modells zu Ihrer Ansicht statt.

+0

Ja, das wirst du machen wollen. Dann haben Sie Zugriff auf intellisense, damit Sie auswählen können, welche Attribute Sie verwenden möchten. –

1

Wenn Sie feststellen, dass Sie viel dies und tun wollen, dass Sie für die Erstellung von vielen kleinen Arten nicht viel Sorgfalt tun, dann können Sie .NET 4 des dynamic-Typ:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 

In Ihrer Aktion Übergeben Sie einen anonymen Typ an Ihre Sicht:

Die Referenz in Ihrer Ansicht, wie Sie es sonst tun würden.

Sie verlieren Intellisense und starke Typisierung auf diese Weise, aber wenn Sie Ihre Ansichten sind Kompilieren (die Ihre CSPROJ Datei manuell bearbeitet werden muss und macht den Build viel langsamer), dann haben Sie keine Zeit Überprüfung kompilieren auf Ansichten sowieso.

+0

Danke für Ihre Zeit ~ – user469652

+0

Kein Problem. Persönlich verwende ich diesen Ansatz nicht, da ich Intellisense mag, und Resharper macht das Generieren kleiner Typen schnell und einfach, aber ich habe diese Antwort hier der Vollständigkeit halber eingefügt. –

Verwandte Themen