IsPostBack
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,才不会产生页面更新不了的困惑.