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.
Yes you cannot pass a Viewbag from view to controller. But you can pass them using TempData. Add this to your View. But this TempData passes the information as an object.
To create a partial view, right click on Shared folder -> select Add -> click on View.. Note: If the partial view will be shared with multiple views, then create it in the Shared folder; otherwise you can create the partial view in the same folder where it is going to be used.
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"]
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