J'ai une vue partielle fortement typée qui prend un ProductImage et quand il est rendu, je voudrais également lui fournir des ViewData supplémentaires que je crée dynamiquement dans la page contenant. Comment puis-je transmettre à la fois mon objet fortement typé et mes ViewData personnalisés à la vue partielle avec l'appel 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
la source
la source
Pour étendre ce que womp a publié, vous pouvez transmettre de nouvelles données de vue tout en conservant les données de vue existantes si vous utilisez la surcharge de constructeur de ce
ViewDataDictionary
type:la source
TemplateInfo.HtmlFieldPrefix
le contrôle enfant qui sera réinitialisé sinonPage partielle (_Header):
la source
Je pense que cela devrait fonctionner non?
la source
Créez une autre classe qui contient votre classe fortement typée.
Ajoutez vos nouveaux éléments à la classe et renvoyez-les dans la vue.
Ensuite, dans la vue, assurez-vous d'hériter de votre nouvelle classe et de modifier les bits de code qui seront désormais erronés. à savoir les références à vos champs.
J'espère que cela t'aides. Sinon, faites-le moi savoir et je publierai un code spécifique.
la source
Le moyen le plus simple de transmettre des données supplémentaires consiste à ajouter les données aux ViewData existants pour la vue sous forme de notes @Joel Martinez. Cependant, si vous ne souhaitez pas polluer votre ViewData, RenderPartial a une méthode qui prend trois arguments ainsi que la version à deux arguments que vous affichez. Le troisième argument est un ViewDataDictionary. Vous pouvez créer un ViewDataDictionary distinct uniquement pour votre partiel contenant uniquement les données supplémentaires que vous souhaitez transmettre.
la source
Cela devrait également fonctionner.
la source
Je sais que c'est un ancien article, mais je l'ai rencontré face à un problème similaire en utilisant le noyau 3.0, j'espère que cela aidera quelqu'un.
la source
Vous pouvez utiliser la variable dynamique ViewBag
la source