asp.net mvc - Teildatenmodell zur Teilansicht übergeben

8

Ich möchte eine Teilansicht erstellen, die eine Modellspalte erhält und sie druckt. So ähnlich:

In der Ansicht:

%Vor%

Und bei der Teilansicht:

%Vor%

Es gibt ein paar Probleme, denen ich begegne:

  1. Der Compiler erlaubt mir nicht, Barnd an die Teilansicht zu senden.
  2. Wenn Sie sich den Teilansichtscode ansehen, sehen Sie das Wort Marke, was der Spaltenname ist. Ich möchte nicht das Wort "Brand" in der Teilansicht hart-codiert, stattdessen mag ich, dass der Spaltenname da sein wird.
  3. In der Teilansicht muss ich @model products_comparison.Models.Product setzen, aber ich nicht möchte die Lochtabelle senden. Ich möchte nur eine Spalte senden - Aber ich weiß nicht, was ich dort setzen soll.

Danke!

BEARBEITEN:

Nur um eine Sache zu löschen, möchte ich, dass die Ansicht für jede Spalte in der Tabelle dieselbe Teilansicht aufruft (für die meisten Spalten in der Tabelle sowieso) und jedes Mal, wenn ich eine andere Spalte sende (eindeutiger Wert Spalte, um genau zu sein).

    
Nir 04.01.2012, 09:51
quelle

2 Antworten

12

Beginnen Sie mit dem Refactoring und bringen Sie die richtige Logik an den richtigen Ort. Diese LINQ-Abfrage hat in einer Ansicht nichts zu tun. Eine Ansicht darf keine LINQ-Abfragen oder was auch immer zum Abrufen von Daten enthalten. Eine View soll mit Daten arbeiten, die ihr von der Controller-Aktion in Form eines View-Modells übergeben werden. Eine Controller-Aktion erstellt und übergibt ein angepasstes Ansichtsmodell, das Sie für die Ansicht definieren.

Wie immer beginnen Sie damit, ein View-Modell zu definieren, das an die Anforderungen Ihrer Sicht angepasst wird:

%Vor%

Dann schreiben Sie eine Controller-Aktion, die dieses View-Modell auffüllt und an die View übergibt:

%Vor%

dann eine Ansicht:

%Vor%

und schließlich können Sie eine entsprechende Anzeigevorlage definieren, die automatisch für jedes Element der Brands -Auflistung Ihres Ansichtsmodells ( ~/Views/Shared/DisplayTemplates/Brand.cshtml ) gerendert wird:

%Vor%     
Darin Dimitrov 04.01.2012 10:00
quelle
7

Bei 1 ändern Sie @Html.RenderPartial("_DisplayAttribute",Brand) in @Html.Partial("_DisplayAttribute",Brand)

Sie müssen auch das Modell in der Teilansicht wie @model products_comparison.Models.Brand oder etwas Ähnliches

angeben

Bitte klären Sie auch 2 & amp; 3 da sie nicht klar sind, was Sie wollen

    
Alexandros B 04.01.2012 09:56
quelle