Mam mocno wpisany Widok częściowy, który pobiera ProductImage i kiedy jest renderowany, chciałbym również udostępnić mu dodatkowe ViewData, które tworzę dynamicznie na stronie zawierającej. Jak mogę przekazać zarówno mój obiekt o jednoznacznie określonym typie, jak i moje niestandardowe ViewData do widoku częściowego za pomocą wywołania RenderPartial?
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
źródło
źródło
Aby przedłużyć na co womp pisał, to może przekazać nowy widok danych przy zachowaniu istniejącego widoku danych, jeśli użyć przeciążenie konstruktora
ViewDataDictionary
tak:źródło
TemplateInfo.HtmlFieldPrefix
kontrolę podrzędną, która zostanie zresetowana w przeciwnym razieCzęściowa strona (_Header):
źródło
Myślę, że to powinno działać, nie?
źródło
Utwórz kolejną klasę, która zawiera klasę o jednoznacznie określonym typie.
Dodaj nowe rzeczy do klasy i zwróć je w widoku.
Następnie w widoku upewnij się, że odziedziczyłeś nową klasę i zmień bity kodu, które teraz będą błędne. mianowicie odniesienia do twoich dziedzin.
Mam nadzieję że to pomoże. Jeśli nie, daj mi znać, a prześlę konkretny kod.
źródło
Najłatwiejszym sposobem przekazania dodatkowych danych jest dodanie danych do istniejących ViewData dla widoku jako notatki @Joel Martinez. Jeśli jednak nie chcesz zanieczyszczać swoich ViewData, RenderPartial ma metodę, która przyjmuje trzy argumenty, a także wyświetlaną wersję dwuargumentową. Trzeci argument to ViewDataDictionary. Możesz utworzyć oddzielny ViewDataDictionary tylko dla części zawierającej tylko dodatkowe dane, które chcesz przekazać.
źródło
To też powinno działać.
źródło
Wiem, że to stary post, ale natknąłem się na niego, gdy miałem podobny problem z rdzeniem 3.0, mam nadzieję, że komuś pomoże.
źródło
Możesz użyć dynamicznej zmiennej ViewBag
źródło