2012-05-11 28 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并防止再次从数据存储装载数据。基本上目前的问题是控件是编程性的,所以它需要在每次回发中都被封装,这意味着再次加载数据,这是每次都需要消耗的过程。 –