我有一个像这样的 ASP.Net 页面:
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
'Page load code here. Call Service Layer, which calls Business Layer.
End Sub
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
'Button code here
End Sub
Page_Load
中的代码需要太长时间,因为它必须连接到许多不同的数据库(业务层中包含的代码)。缓存页面的最佳方法是什么,以便Page_Load
中的代码在click事件之前不运行? Page_Load
中的代码是生成控件所必需的。 Button1_Click
遍历这些控件。
我倾向于关注业务层和数据层。我意识到这可能是一个基本问题。
答案 0 :(得分:3)
Page_Load将始终在click事件之前运行。您需要熟悉ASP.NET page lifecycle model以及回发的工作原理。
在Page_Load中运行的大多数代码不应该在回发时再次运行,因此您使用if语句来检查它是否是回发。大多数控件等的加载将更新视图状态,因此不需要重新初始化回发。
答案 1 :(得分:0)
如果不需要在Page_Load中生成的信息,您只需将此行放在该方法的顶部(在C#中,但我认为它在VB中类似):
If Page.IsPostback Then
Return
End If
但是,如果需要,则可以使用Page
对象的ViewState
property
我会使用上面链接的第一个示例中显示的方法,并将所需的任何计算结果存储在那里,然后使用它来填充控件。