Modifying MVC 3 ViewBag in a partial view does not persist to the _Layout.cshtml

If you pass the ViewBag into the partial’s viewdatadictionary, then pull it out (and cast), you can do whatever you want and the reference is kept. The cool part is that since it’s dynamic, you can even add properties and then they’ll show up on the parent page’s Viewbag.

Page:

//set the viewbag into the partial's view data
@{Html.RenderPartial("Elaborate", Model, new ViewDataDictionary { {"vb", ViewBag}});}

Partial:

@{
   var vb = ((dynamic)ViewData["vb"]);
   vb.TheTitle = "New values";
 }

Page

@ViewBag.TheTitle = "New value"

Leave a Comment

techhipbettruvabetnorabahisbahis forumu