smhy8187

 

IsPostBack

关于ispostback的问题
2007-02-14 09:24
IsPostBack是Page类的一个属性,返回值为一个布尔值。一般放在Page_Load事件中。当页面是第一次打开时其值为False,若当前页面为一个提交后的页面其值为True.
?
通俗的说就是当你的叶面第一次登录时会调用if(!IsPostBack){。。。。。。}中的语句,而在此页面未被关闭之前再次进入该页面时(例如,用back<-返回该页面则{}中的语句不会再被调用;

系统的说是是否将页面再重新回传给web服务器!
函数作用是获取一个值,该值指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。
记得有些邦定必须放在这里面,否则会出一些莫名的错误
?
当每次点击服务器端按钮,都会对Page类重构
            调用Page_Load事件,然后才会调用响应事件,譬如说页面提交等等
            放在
             if (!IsPostBack) {
                    // Validate initially to force the asterisks
                  // to appear before the first roundtrip.
                    Validate();
                }
            是为了判断是否是第一次调用此页面
            
IsPostBack是指是否第一次调用这个页面。
假如是只需要执行一次的一些页面上的设置,可以放在这个里面。有加快速度的功能。
?
在page_load 中
要每次刷新页面都执行的代码写在
If IsPostBack() Then Exit Sub
之上
只执行一次的,写在它的下面




---------------------------------------------------------------
例子:
aspx:
<%@ Page language="c#" Codebehind="postback1.aspx.cs" AutoEventWireup="false" Inherits="yuchuang.postback1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 <HEAD>
  <title>postback1</title>
  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" Content="C#">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
 </HEAD>
 <body MS_POSITIONING="GridLayout">
  <form id="Form1" method="post" runat="server">
   <asp:Label id="Label1" style="Z-INDEX: 101; LEFT: 112px; POSITION: absolute; TOP: 72px" runat="server"
    Width="104px">Label</asp:Label>
   <asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 104px; POSITION: absolute; TOP: 112px" runat="server"
    Text="Button"></asp:Button>
  </form>
 </body>
</HTML>


.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace yuchuang
{
 /// <summary>
 /// postback1 的摘要说明。
 /// </summary>
 public class postback1 : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.Label Label1;
  protected System.Web.UI.WebControls.Button Button1;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   if(Page.IsPostBack)
   {
    Label1.Text = "网页不是第一次载入";
   }
   else
   {
       Label1.Text = "网页是第一次载入";
   }
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Button1.Click += new System.EventHandler(this.Button1_Click);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void Button1_Click(object sender, System.EventArgs e)
  {
     Response.Write("you are already click");
  }
 }
}


--------------------------
注意: asp.net 服务器表单是回传给表单自身的.  postback(回传)---可分成: post (提交), back(返回自身页面).
所以第一次加载页面,postback应该为false .所以(!IsPostBack)为true,可以进行一些初始化的操作.
在用同一个页处理添加和更新信息时. 要正确使用isPostBack,才不会产生页面更新不了的困惑.

posted on 2007-06-20 13:45  new2008  阅读(1424)  评论(0编辑  收藏  举报

导航