Eu tenho uma exibição parcial fortemente tipada que usa uma ProductImage e, quando é renderizada, também gostaria de fornecer alguns ViewData adicionais que eu crio dinamicamente na página que contém. Como posso passar meu objeto fortemente digitado e meu ViewData personalizado para a exibição parcial com a chamada 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
fonte
fonte
Para estender o que o womp postou, você pode passar novos View Data, mantendo os View View existentes, se você usar a sobrecarga de construtor da seguinte
ViewDataDictionary
maneira:fonte
TemplateInfo.HtmlFieldPrefix
no controle filho que será redefinir o contrárioPágina parcial (_Header):
fonte
Eu acho que isso deve funcionar não?
fonte
Crie outra classe que contenha sua classe fortemente tipada.
Adicione seus novos itens à turma e retorne-os à exibição.
Então, na visualização, garanta que você herda sua nova classe e altere os bits de código que agora estarão com erro. ou seja, as referências aos seus campos.
Espero que isto ajude. Caso contrário, avise-me e publicarei um código específico.
fonte
A maneira mais fácil de transmitir dados adicionais é adicioná-los aos ViewData existentes para a visualização, como observa @Joel Martinez. No entanto, se você não deseja poluir seu ViewData, o RenderPartial possui um método que aceita três argumentos, além da versão de dois argumentos exibida. O terceiro argumento é um ViewDataDictionary. Você pode construir um ViewDataDictionary separado apenas para o seu parcial contendo apenas os dados extras que você deseja transmitir.
fonte
Isso também deve funcionar.
fonte
Eu sei que este é um post antigo, mas me deparei com ele quando confrontado com um problema semelhante usando o núcleo 3.0, espero que ajude alguém.
fonte
Você pode usar a variável dinâmica ViewBag
fonte