Background:
I'm trying to produce dynamically generated Factsheets, where each Factsheet has a number of ContentAreas, and each ContentArea is configured to contain a number of Panels.
I have a FactsheetController
, a ContentAreaController
, a PanelController
and individual panels such as NameAndDate and AssetPanel
FactsheetController
produces an Index View which acts as a template to load ContentAreas in to.
This is FactsheetController
's Index, where Model
contains the configuration data defining which panels are associated with which ContentArea
:
<div id="divTop">
<% Html.RenderAction("Top", "ContentArea", Model); %>
</div>
<div id="divLeftColumn">
<% Html.RenderAction("Left", "ContentArea", Model); %>
</div>
<div id="divRightColumn">
<% Html.RenderAction("Right", "ContentArea", Model); %>
</div>
<div id="divBottom">
<% Html.RenderAction("Bottom", "ContentArea", Model); %>
</div>
When the Top
action method gets called on ContentAreaController
, it passes a list of PanelConfigurations
associated with that ContentArea
to its PartialView
, which is defined as:
<% foreach (ConfiguredFactsheetPanel panel in Model)
{ %>
<% Html.RenderAction(panel.Name, "Panel", panel); %>
<% } %>
This PartialView
renders then renders each panel that it is configured to show.
When I'm loading the FactsheetController
I need an instance of a Fund
object to know which ContentAreas
are associated with that particular Factsheet
, so I create one based on QueryString
data. The thing is, I also need that Fund
object in the PanelController
because the Fund
object contains the data I need to display. That QueryString
data doesn't exist in the PanelController
, because it only existed in the URL that called FactsheetController
.
question:
So my question is, what's the best way for me to make the Fund
object I create in FactsheetController
to be available in the PanelController
I'd also be interested in hearing anyone's opinion on issues with this initial design.