假設你LINQ2SQL實現中有同樣的關係作爲數據庫(它,如果你沒有拖放到設計,他們肯定做的),這裏是我會怎麼處理它。
我會創建一個類型機構的強類型局部視圖,將代表每個部分(機構,在您的情況),稱之爲AgencyReportSection.ascx。這種控制將採取一個代理機構,通過其業務部門進行迭代,這反過來又遍歷其客戶。
無論你正在打包備份您的數據,做這樣的事情:
DataContext context = new DataContext();
DataLoadOptions options = new DataLoadOptions();
options.LoadWith<Agency>(a => a.BusinessUnit);
options.LoadWith<BusinessUnit>(b => b.Client);
context.LoadOptions = options;
什麼這會給你的是,當上下文得到一個機構,它會按照定義的關係,並給你的對象作爲好。所以,你得到:
Agency a = context.Agency.FirstOrDefault();
IEnumerable<BusinessUnit> units = a.BusinessUnits;
IEnumerable<Client> clients = units.Clients;
你的觀點可以這樣做:
<% foreach(var agency in agencies)%{>
<% Html.RenderPartial("AgencyReportSection"); %>
<%}%>
的原因,你正在做的數據加載選項是爲了避免延遲加載在視圖中,讓模型收拾了所有的必要的數據。
我希望我能正確理解您的問題...
不幸的是,我們必須堅持使用我們目前使用的技術堆棧。我需要按照我在問題中所說的做,構建一箇中間ViewModel對象並將其傳遞給我的視圖。 – KingNestor 2009-06-19 16:06:05