I have one master page in which 3 partial view renders and it contains one render body (content place holder) for views.
I am trying to pass data (any string) from my child view to one of the partial view rendered on master page. And for this I am using Viewbag but its not accessble on parent view.
My Code is below :
My Master page: [ Main_Layout.chtml ]
<body>
<div>
@{Html.RenderAction("Header_PartialView", "Home");}
</div>
<div>
<table cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td id="tdLeft" class="lftPanel_Con">
<div>
@{Html.RenderAction("LeftPanel_PartialView", "Home");}
</div>
</td>
<td id="tdRight" width="100%">
<div>
@RenderBody()
</div>
</td>
</tr>
</table>
</div>
<!--start footer-->
<div>
@{Html.RenderAction("Footer_PartialView", "Home");}
</div>
</body>
My Child View : [ TestPage1.chtml ]
@{
ViewBag.Title = "TestPage1";
Layout = "~/Views/Shared/Main_LayoutPage.cshtml";
var test1 = ViewBag.testData1;
var test2 = ViewData["testData2"];
}
<h2>TestPage1</h2>
<div>This is only for testing</div>
My Controller Code :
public ViewResult TestPage1()
{
ViewBag.testData1 = "My first view bag data";
ViewData["testData2"] = "My second view data";
return View();
}
Now I want to access data of my TestPage on Header_PartialView views.
@{
var test = ViewBag.testData1;
var test2 = ViewData["testData2"];
}
For access the data from TestPage in Header_PartialView you need to pass it as a parameter in Html.RenderAction() on Main_LayoutPage.cshtml like this:
@{ var test = ViewBag.testData1; }
@{Html.RenderAction("Header_PartialView", "Home", new { test = test });}
And in Header_PartialView action add parameter string test and pass it like as a model because ViewBag from layout doesn't comes here.
public ActionResult Header_PartialView(string test)
{
return View(model: test);
}
Then on Header_PartialView.cshtml you are getting the code:
@model string
@{
Layout = null;
}
<div>@Model</div>
Try like this in your partial:
@{
var test = ViewContext.ParentActionViewContext.ViewData["testData1"];
var test2 = ViewContext.ParentActionViewContext.ViewData["testData2"];
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With