Ich habe eine stark typisierte Teilansicht, die ein ProductImage verwendet, und wenn es gerendert wird, möchte ich ihm auch einige zusätzliche ViewData bereitstellen, die ich dynamisch auf der enthaltenen Seite erstelle. Wie kann ich mit dem RenderPartial-Aufruf sowohl mein stark typisiertes Objekt als auch meine benutzerdefinierten ViewData an die Teilansicht übergeben?
var index = 0;
foreach (var image in Model.Images.OrderBy(p => p.Order))
{
Html.RenderPartial("ProductImageForm", image); // < Pass 'index' to partial
index++;
}
c#
asp.net
asp.net-mvc
asp.net-mvc-partialview
viewdata
Nathan Taylor
quelle
quelle
Zu erweitern, was posted womp, Sie können neue Daten anzeigen passieren , während die vorhandene View Data Halte wenn Sie den Konstruktor Überlastung der Verwendung
ViewDataDictionary
wie folgt:quelle
TemplateInfo.HtmlFieldPrefix
Teilseite (_Header):
quelle
Ich denke das sollte nicht funktionieren?
quelle
Erstellen Sie eine weitere Klasse, die Ihre stark typisierte Klasse enthält.
Fügen Sie der Klasse Ihre neuen Inhalte hinzu und geben Sie sie in der Ansicht zurück.
Stellen Sie dann in der Ansicht sicher, dass Sie Ihre neue Klasse erben und die Codebits ändern, die jetzt fehlerhaft sind. nämlich die Verweise auf Ihre Felder.
Hoffe das hilft. Wenn nicht, lass es mich wissen und ich werde einen bestimmten Code posten.
quelle
Der einfachste Weg, zusätzliche Daten zu übergeben, besteht darin, die Daten zu den vorhandenen ViewData für die Ansicht hinzuzufügen, wie @Joel Martinez feststellt. Wenn Sie Ihre ViewData jedoch nicht verschmutzen möchten, verfügt RenderPartial über eine Methode, die drei Argumente sowie die von Ihnen angezeigte Version mit zwei Argumenten akzeptiert. Das dritte Argument ist ein ViewDataDictionary. Sie können ein separates ViewDataDictionary nur für Ihren Teil erstellen, der nur die zusätzlichen Daten enthält, die Sie übergeben möchten.
quelle
Dies sollte auch funktionieren.
quelle
Ich weiß, dass dies ein alter Beitrag ist, aber ich bin auf ihn gestoßen, als ich mit Core 3.0 auf ein ähnliches Problem gestoßen bin. Ich hoffe, es hilft jemandem.
quelle
Sie können die dynamische Variable ViewBag verwenden
quelle