J'utilise MVC 3 avec le moteur de vue Razor. Je veux définir certaines valeurs dans le ViewBag à l'intérieur d'une vue partielle et je veux récupérer ces valeurs dans mon _Layout.cshtml. Par exemple, lorsque vous configurez un projet ASP.NET MVC 3 par défaut, vous obtenez un fichier _Layout.cshtml dans le dossier "/Views/Shared". Dans ce _Layout.cshtml, le titre de la page est défini comme suit :
<title>@ViewBag.PageTitle</title>
Ensuite, dans la vue "/Views/Home/About.cshtml", le contenu du ViewBag est modifié :
@{
ViewBag.Title = "About Us";
}
Cela fonctionne bien. Lorsque la vue "About" est rendue, le titre de la page est "About Us". Donc, maintenant je veux rendre une vue partielle à l'intérieur de ma vue About et je veux modifier le ViewBag.Title à l'intérieur de ma vue partielle. ("/Views/Shared/SomePartial.cshtml")
@Html.Partial("SomePartial")
Dans cette vue partielle, j'ai ce code :
@{
ViewBag.Title = "About Us From The Partial View";
}
Lorsque je débogue ce code, je vois que le ViewBag.Title est défini sur "About Us", puis dans la vue partielle, il est réinitialisé sur "About Us From The Partial View", mais lorsque le code atteint le _Layout.cshtml, il revient à "About Us".
Cela signifie-t-il que si le contenu du ViewBag est modifié dans une vue partielle, ces changements n'apparaîtront pas dans la vue principale (About.cshtml) ou dans le _Layout.cshtml ?
Merci d'avance !