0

我有一个 Report.aspx 页面,该页面加载不同UserControls以交替查看特定对象数据。UserControls继承相同的基类型类,其中覆盖特定的操作方法。我为每个服务类使用一个特定的服务类UserControl来获取实现具有操作签名的特定接口的数据。

我现在使用工厂模式将实际UserControl类型返回给 Report.aspx 并将其加载到 aPanelControl中,然后调用控制方法根据一些参数获取一些数据。

由于它的动态特性,这UserControl应该在每次回发中加载,任何其他解决方案都可以接受。尽管我不需要从调用 DL 的 BL 加载数据,但在每次回发时。我试图找到一个解决方案来向 BL 表明我不需要您再次要求数据,因为我只是针对其他问题回帖(例如下载报告文件、打印等)。我希望这发生在 BL 级别,而不是 ASPX 前端。到目前为止,我认为我应该让 BL 以某种方式知道这一点(PostBack 或!PostBack)。我想我可以只创建一个参数 true、false 并传递 PostBack 属性。

欢迎任何想法、架构和最佳实践。

4

3 回答 3

0

您能否详细说明您的陈述“在每次回发时,尽管我不需要从调用 DL 的 BL 加载数据。”??在每次回发期间,用户控件需要显示数据(即使它与上次回发的数据相同),因为用户控件与 ASPNET 网页经历相同的生命周期。你怎么能防止呢?

于 2012-05-11T07:12:13.003 回答
0

我决定一个非常好的解决方案是 .NET 4.0 中的 System.Runtime.Caching。非常适合您需要使用它的每一层。

http://msdn.microsoft.com/en-us/library/dd985642

于 2012-05-11T13:56:10.367 回答
0

为什么不将逻辑包装在 if(!Page.IsPostback){....} 中调用 BL?

于 2012-05-11T07:06:04.190 回答