Tengo una vista parcial fuertemente tipada que toma una imagen de producto y cuando se renderiza también me gustaría proporcionarle algunos datos de vista adicionales que creo dinámicamente en la página que lo contiene. ¿Cómo puedo pasar mi objeto fuertemente tipado y mi ViewData personalizado a la vista parcial con la llamada 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
fuente
fuente
Para ampliar qué womp publicado, puede pasar nuevos datos de vista mientras conserva los datos de vista existentes si usa la sobrecarga del constructor de la
ViewDataDictionary
misma manera:fuente
TemplateInfo.HtmlFieldPrefix
en el control secundario que se restablezca lo contrarioPágina parcial (_Header):
fuente
Creo que esto debería funcionar no?
fuente
Cree otra clase que contenga su clase fuertemente tipada.
Agregue sus cosas nuevas a la clase y devuélvalas a la vista.
Luego, en la vista, asegúrese de heredar su nueva clase y cambie los bits de código que ahora estarán en error. a saber, las referencias a sus campos.
Espero que esto ayude. Si no es así, avíseme y publicaré un código específico.
fuente
La forma más fácil de pasar datos adicionales es agregar los datos a los ViewData existentes para la vista como señala @Joel Martinez. Sin embargo, si no desea contaminar su ViewData, RenderPartial tiene un método que toma tres argumentos, así como la versión de dos argumentos que muestra. El tercer argumento es un ViewDataDictionary. Puede construir un ViewDataDictionary separado solo para su parcial que contenga solo los datos adicionales que desea pasar.
fuente
Esto también debería funcionar.
fuente
Sé que esta es una publicación antigua, pero la encontré cuando tuve un problema similar con Core 3.0, espero que ayude a alguien.
fuente
Puede usar la variable dinámica ViewBag
fuente