I have a view that is not strongly typed. However I have in this view a partial view that is strongly typed.
How do I do I pass the model to this strongly typed view?
I tried something like
public ActionResult Test()
{
MyData = new Data();
MyData.One = 1;
return View("Test",MyData)
}
In my TestView
<% Html.RenderPartial("PartialView",Model); %>
This give me a stackoverflow exception. So I am not sure how to pass it on. Of course I don’t want to make the test view strongly typed if possible as what happens if I had like 10 strongly typed partial views in that view I would need like some sort of wrapper.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
You should extend your model so that it can provide all necessary fields for the view (this is called ViewModel) or you provide them seperately with ViewData.
public ActionResult Test()
{
MyData = new Data();
MyData.One = 1;
ViewData["someData"]=MyData;
return View();
}
then:
<% Html.RenderPartial("PartialView",ViewData["someData"]); %>
ViewData is a nice losely typed dictionary
Method 2
Put the object required by the partial into Viewdata and use ist in the view as input for the partial.
public ActionResult Test()
{
ViewData["DataForPartial"] = new PartialDataObject();
return View("Test")
}
In the view use:
<% Html.RenderPartial("PartialView",ViewData["DataForPartial"]); %>
But anyway: There is no reason no to have a stronly typed view.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0