5

像本示例编码一样,始终在 Web 表单的 Page_Load 子例程中使用 .IsPostBack 是“最佳实践”吗?

我希望可以问这个问题。如果没有,我将立即删除该问题。

基本上我想用你们大多数人编码的方式来编码。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not Page.IsPostBack Then

        ' More coding will go here.
        '--------------------------
    End If

请给出它的使用的优点和缺点。

4

3 回答 3

10

这与其说是“最佳实践”的案例,不如说是您是否需要使用它的案例。

的确,您通常会将IsPostBack.Page_LoadPage_InitHTML

在这种情况下,您实际上是在使用该命令来防止正文中的代码在页面回发到自身时触发;例如表单提交或AutoPostBack服务器控件,例如DropDownList.

没有任何,至少我能想到的,赞成和反对的。它是需要或不需要的情况。

理想情况下需要它的一个示例是只想从数据库中获取数据一次并将其绑定到DropDownList. 当您回发时,此数据将在视图状态中可用。所以你不需要在回发时再次访问数据库。

不将代码放入其中的一个示例是,如果您正在生成具有事件处理程序的服务器控件(例如按钮),例如click,同时添加。这需要在回发时重新生成,以便事件处理程序可用。

于 2012-11-30T19:36:46.943 回答
4

好处是您只能执行一次昂贵的操作。绑定到gridView...等。

大多数是您不想在刷新期间执行的操作。

于 2012-11-30T19:36:40.433 回答
1

它始终取决于您要优化的内容。如果你的初始化代码需要很长时间,最好只做第一次,让你的控件通过 ViewState 来初始化。然后你使用If Not IsPostBack.

但是,如果您的目标是带宽更重要的移动设备,您可能会关闭 ViewState 并在回发时再次初始化您的数据(您可以从 Cache 或 SessionState 中读取它)。始终注意您的 ViewState,我看过 20 kByte ViewState 或更多的页面。

优点:

  • 初始化开销更少(例如访问数据库)
  • 服务器上的内存更少(会话或缓存)

反对:

  • ViewState 的更多带宽
于 2012-11-30T21:16:12.697 回答