2012-05-11 27 views
0

我有一個Report.aspx頁面加載不同的UserControls來查看特定的對象數據。 UserControls繼承了覆蓋特定操作方法的相同基本類型類。我爲每個UserControl使用特定的Service類來獲取實現具有操作簽名的特定接口的數據。ASP.NET在回發中動態添加UserControl和緩存數據

我現在使用工廠模式將實際的UserControl類型返回到Report.aspx並將其加載到PanelControl中,然後調用控件方法根據一些參數來獲取一些數據。

UserControl應該加載在每一個回發,由於它的動態性質,任何其他解決方案被接受。儘管我不需要從調用DL的BL中加載數據,但在每次回發中都是如此。我試圖找到一個解決方案,向BL展示我不需要再次調用這些數據,因爲我只是發佈其他問題(例如下載報告文件,打印等)。我希望在BL級別上發生這種情況,而不是ASPX前端。到目前爲止,我認爲我應該讓BL以某種方式知道這個(PostBack或!PostBack)。我想我可以創建一個參數true,false並傳遞PostBack屬性。

任何想法,體系結構和最佳實踐都非常受歡迎。

回答

0

爲什麼不打包邏輯來調用BL裏面的if(!Page.IsPostback){....}?

+0

這不會導致業務層中的有效緩存策略。我需要在BL中發生一些事情,可能會創建一個CL或其他東西。 –

0

您能否詳細說明您的陳述「在每次回寄時,儘管我不需要從調用DL的BL中加載數據」。在每次回發期間,用戶控件需要顯示數據(即使它與上次回發數據相同),因爲usercontrol與ASPNET網頁的生命週期相同。你怎麼能阻止呢?

+0

沒錯,那就是我正在搜索的內容,如何在回發中再次加載UserControl並防止再次從數據存儲裝載數據。基本上目前的問題是控件是編程性的,所以它需要在每次回發中都被封裝,這意味着再次加載數據,這是每次都需要消耗的過程。 –