How to make data available when one Controller's View calls another Controller's View?


How to make data available when one Controller's View calls another Controller's View?



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.




looking for suggestions on how i can highlight areas on an image

1:



Wanting to mix server side ASP.Net MVC expansion in javascript file, but how… RenderPartial?
I wouldn't use query strings like that.


Problem with Primary Key in a Partial View shared by Create and Edit views
I would extend the model object passed to FactsheetController's Index to include the data required in your other partial views and then pass that to the actions with the RenderAction method.


How to start a new ASP.NET MVC site?
So ConfiguredFactsheetPanel would be extended to either contain, or be replaced by a type that contained, the Fund object you require in your partial views..
How can I determine the current controller action in an mvc sitemap?
I suspect that the objects that you are using in your view currently are entities driven by your persistence technology such as NHibernate or Entity Framework.


Check ASP.NET MVC values (roles) from client (jQuery)
If this is the case you probably won't want to change your entity definitions to satisfy your views and instead create view models..
Building a repeatable HTTP request parameter


“ASP.NET Webforms MVP” as an alternative to “ASP.NET MVC” [closed]


61 out of 100 based on 26 user ratings 51 reviews

@