在Page_Load子例程中使用.IsPostBack

时间:2012-11-30 19:31:01

标签: asp.net vb.net ispostback

总是在网页表单的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

请说明其使用的优缺点。

3 个答案:

答案 0 :(得分:6)

这不是一个“最佳实践”的案例,而是一个你是否需要使用它的案例。

确实如此,您通常会将IsPostBack放在Page_Load中,但您也可以将其放在Page_Init中 - 基本上在渲染之前触发的任何页面事件中HTML

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

没有任何,至少我能想到的,赞成和反对。这是一个需要或不需要的案例。

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

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

答案 1 :(得分:3)

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

主要是你不想在刷新期间执行的东西。

答案 2 :(得分:0)

它总是取决于您想要优化的内容。如果初始化代码需要很长时间,最好只在第一次执行,并让控件通过ViewState初始化。然后使用If Not IsPostBack

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

优点:

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

魂斗罗:

  • 更多带有ViewState的带宽