Übergeben Sie zusätzliche ViewData an eine stark typisierte Teilansicht
Habe ich eine stark typisierte Teilansicht, die es braucht, ProductImage und wenn es gemacht wird ich würde auch gerne es mit einigen zusätzlichen ViewData, die ich erstelle dynamisch in der übergeordneten Seite. Wie kann ich pass meine beiden stark typisierte, Objekt-und meine custom ViewData die Teilansicht mit der RenderPartial nennen?
var index = 0;
foreach (var image in Model.Images.OrderBy(p => p.Order))
{
Html.RenderPartial("ProductImageForm", image); //< Pass 'index' to partial
index++;
}
InformationsquelleAutor der Frage Nathan Taylor | 2009-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
RenderPartial braucht einen weiteren parameter, das ist einfach eine ViewDataDictionary. Sie sind fast da, nur rufen Sie es wie folgt:
Beachten Sie, dass dies überschreibt die Standard-ViewData, dass alle anderen Ansichten sind standardmäßig. Wenn Sie hinzufügen, etwas ViewData, es wird nicht in das neue Wörterbuch, das Sie vorbei sind, um Ihre partial view.
InformationsquelleAutor der Antwort womp
Erweitern auf das, was womp gepostet, du kann passieren neue Daten Anzeigen, unter Beibehaltung der vorhandenen Daten Anzeigen, wenn Sie den Konstruktor verwenden überlastung der
ViewDataDictionary
etwa so:InformationsquelleAutor der Antwort ctorx
Teilweise Seite(_Header):
InformationsquelleAutor der Antwort muthuvel
Ich denke, das sollte funktionieren, Nein?
InformationsquelleAutor der Antwort Joel Martinez
Erstellen Sie eine weitere Klasse, die mit Ihren stark typisierte Klasse.
Fügen Sie Ihre neuen Sachen an die Klasse und gibt es zurück in die Ansicht.
Dann in der Ansicht, sicherzustellen, dass Sie Erben Ihrer neuen Klasse, und ändern Sie die bits von code, der jetzt im Irrtum. nämlich die Verweise auf Ihre Felder.
Hoffe, das hilft. Wenn nicht, dann lass es mich wissen und ich werde nach spezifischen code.
InformationsquelleAutor der Antwort griegs
Der einfachste Weg, um pass-zusätzliche Daten hinzufügen die Daten zu den bestehenden ViewData für die Ansicht, wie @Joel Martinez Noten. Allerdings, wenn Sie nicht wollen, belasten Sie Ihren ViewData, RenderPartial eine Methode akzeptiert drei Argumente sowie die zwei-argument-version, die Sie zeigen. Das Dritte argument ist ein ViewDataDictionary. Können Sie konstruieren eine separate ViewDataDictionary nur für die partielle enthält nur die zusätzlichen Daten, die Sie übergeben möchten.
InformationsquelleAutor der Antwort tvanfosson
Können Sie die dynamische variable ViewBag
InformationsquelleAutor der Antwort Jack1987