Pass viewbag to partial view from action controller
I have a mvc view with a partial view.There is a ActionResult method in the controller which will return a PartialView. So, I need to pass ViewBag data from that ActionResult method to Partial View.
This is my Controller
public class PropertyController : BaseController
{
public ActionResult Index()
{
return View();
}
public ActionResult Step1()
{
ViewBag.Hello = "Hello";
return PartialView();
}
}
In Index.cshtml View
@Html.Partial("Step1")
Step1.cshtml partial view
@ViewBag.Hello
But this is not working. So, what is the correct way to get data from viewbag. I think I'm following wrong method. Please guide me.
"Child actions follow a different controller/model/view lifecycle than parent actions. As a result they do not share ViewData/ViewBag."
The answer provides an alternate way of passing data.
Does a child action share the same ViewBag with its "parents" action?
You can use it as mentioned below :
In your View :
@Html.Partial("[ViewName]", (string)ViewBag.Message)
And Your partial View :
@model String
<b>@Model</b>
As Shown Above ViewBag.Message will be passed to the partial view. and in your partial view you can use it as a @Model .
Note : here type of ViewBag.Message is string . You can pass any type.
If you don't have to use ViewBag, you can use TempData. TempData is shared for the whole execution chain.
public class PropertyController : BaseController
{
public ActionResult Index()
{
return View();
}
public ActionResult Step1()
{
TempData["Hello"] = "Hello";
return PartialView();
}
}
In Index.cshtml View
@Html.Partial("Step1")
Step1.cshtml partial view
@TempData["Hello"]
链接地址: http://www.djcxy.com/p/42098.html