Is there a way to pass a piece of extra data along with a model to a Partial view?
E.G.
@Html.Partial("_SomeTable", (List<CustomTable>)ViewBag.Table);
Is what I have now. Can I add something else without changing my Model?
@Html.Partial("_SomeTable", (List<CustomTable>)ViewBag.Table, "TemporaryTable");
I see ViewDataDictionary as a param. I am not sure what this object does or if this meets my need.
Partial Views can use the Page Model for their data whereas Child Actions use independent data from the Controller. Editor/Display templates pass items from the model to the system but can be overridden by user partial views.
ViewDataDictionary can be used to replace the ViewData dictionary in the partial view... If you don't pass a ViewDataDictionary parameter then the parial's viewdata is the same as the parents.
An example of how to use it in the parent is:
@Html.Partial("_SomeTable", (List<CustomTable>)ViewBag.Table, new ViewDataDictionary {{ "Key", obj }});
Then within the partial you can access this obj as follows:
@{ var obj = ViewData["key"]; }
A completely different approach woud be to use the Tuple class to group both the original model and extra data together as follows:
@Html.Partial("_SomeTable", Tuple.Create<List<CustomTable>, string>((List<CustomTable>)ViewBag.Table, "Extra data"));
The model type for the partial would then be:
@model Tuple<List<CustomTable>, string>
Model.Item1 gives the List object and Model.Item2 gives the string
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