ASP.NET中IsPostBack的理解

这个属性相信大家一定经常用吧 ,判断是否为回发 (切记这是判断是否回发 ,而听到很多人说这是判断是否第一次加载页面 ,还有的说是否为刷新 )很多人说做项目时pageload事件里都要加上,例如下面的代码:

protected void Page_Load(Object sender,EventArgs e)

{

if(!IsPostBack)

{

//执行页面首次请求时需要进行的操作;

}

}

但是确不太理解根本原,说加上这个肯定没错 ,然而不知根本终会出错。 所以 一定要理解原理~~

为了把这个说清楚 ,这里不用asp.net页面 用html+handler 一般处理程序来讲清这个属性。如下:

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>关于IsPostBack的理解</title>

</head>

<body>

<form action="Hello.ashx" method="post">

<input type ="hiddle" name="isPostBack" class="haddile" name="isPostBack" value="true"/>

<label>姓名:</label>

<input type="text" id="txtUserName" name="txtUserName" value ="{userName}"/>

<label>年龄:</label>

<input type="text" id="txtUserAge" name="txtUserAge" value ="{userAge}" />

<input type="submint" value="提交" />

<label>{ErrorMsg}</label>

</form>

</body>

相关HttpHandler代码如下:

publci void ProcessRequset(HttpContext context)

{

context.Response.ContextType = "text/html";

string userName = context.Request["txtUserName"];

string userAge = context.Request["txtUserAge"];

string msg = string.Empty;

string isPostBack = context.Request["isPostBack"];

if(isPostBack == "true")//如果提交了该参数则说明是回发提交表单进行请求页面

{

context.Response.Write("表单提交回发请求页面");

msg = userName +"你好!";

}

else

{

context.Response.Write("首次请求页面");

userName = string.Empty;

mag = string.Empty;

userAge = string.Empty;

}

string fulPath = context.Server.MapPath("Hello.html");//得到文件全路径

string content = System.IO.File.ReadAllText(fullPath);//读取文件内容

content =content.Replace("{txtUserName}",userName);

content = content.Replace("{txtUserAge}",userAge);

content = content.Replace("{ErrorMsg}".msg,);

context.Response.Write(content);

}

public bool IsReusable

{

get{ return false;}

}

阅读代码相信大家一看就知道怎么回事儿,这里简要说下

运行HttpHandler因为第一次运行context.Request["isPostBack"]获取传进来的参数肯定是为null,所以会直接进入页面读取html,把首次请求处理的数据输出到html页面上。

(占位符{txtUserName})为了实现保存页面状态哦。

这时在html页面输入姓名和年龄点击提交时(包括以后提交)

<input type="hidden" name="ispostback" class="night" value="true" />

isPostBack的Value一直是True,所以context.Request["isPostBack"]获取参数的值为“true”;这就造成了很多人说isPostBack是判断是否为第一次请求页面,其实当你进入页面后进行刷新操作时,依然会发现isPostBack不为True,原因是你并没有进行提交是想一次回发操作。

举个生活的实例吧

假如你去餐馆吃饭,那么餐馆就是相当于服务器,你就是客户端,那么餐馆服务员提交给你的菜单(相当于是网页首次打开,进行首次请求),然后你从菜单上点菜后将菜单返回给餐馆服务员(这个过程相当于是进行isPsotBack回发请求)。餐馆根据你的菜单做出你需要的才,上到你餐桌上(进行isPostBack后服务器返回给你的页面)。

其中的原理是就是这样,如各位有更好的理解说明,不妨贴出来分享下!!!

时间: 2024-08-27 06:49:32

ASP.NET中IsPostBack的理解的相关文章

ASP.NET中IsPostBack属性研究

通过页面的IsPostback属性,可以检查 .aspx 页是否为传递回服务器的页面:当加载页面并对控件的更改属性处理之前,用户可以在page_Load事件中检查该页面是否被传递回的页面. 一般是在page_load中检查是否是第一次加载本页或是判断是否是用户提交(PostBack)if (!IsPostBack) {//do something}在用DataGrid访问和更新数据库时没有注意到这个问题,会出现各种各样的奇怪问题,比如我的这种. 问题描述:用DataGrid访问和更新数据库(SQ

ASP.NET中IsPostBack详解

1.IsPostBack介绍Page.IsPostBack是一个标志:当前请求是否第一次打开. 调用方法为:Page.IsPostBack或者IsPostBack或者this.IsPostBack或者this.Page.IsPostBack,它们都等价. 1)当通过IE的地址栏等方式打开一个URL时是第一次打开, 当通过页面的提交按钮或能引起提交的按钮以POST的方式提交的服务器时,页面就不再是第一次打开了.(每点击一 次按钮,都是一次加载) 2)IsPostBack只有在第一次打开的时候是fa

[转载]ASP.NET中IsPostBack详解

1.IsPostBack介绍Page.IsPostBack是一个标志:当前请求是否第一次打开. 调用方法为:Page.IsPostBack或者IsPostBack或者this.IsPostBack或者this.Page.IsPostBack,它们都等价. 1)当通过IE的地址栏等方式打开一个URL时是第一次打开, 当通过页面的提交按钮或能引起提交的按钮以POST的方式提交的服务器时,页面就不再是第一次打开了.(每点击一次按钮,都是一次加载) 2)IsPostBack只有在第一次打开的时候是fal

ASP.NET中IsPostBack

1.IsPostBack介绍 Page.IsPostBack是一个标志:当前请求是否第一次打开. 调用方法为:Page.IsPostBack或者IsPostBack或者this.IsPostBack或者this.Page.IsPostBack,它们都等价. 1)当通过IE的地址栏等方式打开一个URL时是第一次打开, 当通过页面的提交按钮或能引起提交的按钮以POST的方式提交的服务器时,页面就不再是第一次打开了.(每点击一次按钮,都是一次加载) 2)IsPostBack只有在第一次打开的时候是fa

ASP.NET中IsPostBack详解(转载)

1.IsPostBack介绍Page.IsPostBack是一个标志:当前请求是否第一次打开. 调用方法为:Page.IsPostBack或者IsPostBack或者this.IsPostBack或者this.Page.IsPostBack,它们都等价. 1)当通过IE的地址栏等方式打开一个URL时是第一次打开, 当通过页面的提交按钮或能引起提交的按钮以POST的方式提交的服务器时,页面就不再是第一次打开了.(每点击一次按钮,都是一次加载) 2)IsPostBack只有在第一次打开的时候是fal

转:通过代码理解Asp.net4中的几种ClientIDMode设置.

转:http://www.cnblogs.com/xray2005/archive/2011/07/05/2097881.html 以前我们可以通过ClientID在JavaScript脚本中服务器端控件.比如: document.getElementById("<%=控件.ClientID %>"); 这种方式不方便,而且如果在有数据绑定的控件中嵌套着子控件,则访问更不太方便了. 现在,在Asp.Net4中,对于控件增加了一种新的属性,名为ClientIDMode.通过设

以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的(摘至互联网,并非原创--xukunping)

在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?    为了更清楚的了解,我们总结出每一种对象应用的具体环境,如下表所示: 方法 信息量大小 保存时间 应用范围 保存位置 Application 任意大小 整个应用程序的生命期 所有用户 服务器端 Session 小量,简单的数据 用户活动时间+一段延迟时间(一般为20分钟) 单个用户 服务器端 Cookie

ASP.NET的IsPostBack

学习asp.net,就不能不谈IsPostBack属性,顾名思义,这是是否回发的意思,多用于判断是不是第一次打开 一.IsPostBack介绍 Page.IsPostBack是一个标志:当前请求是否第一次打开.调用方法为:Page.IsPostBack或者IsPostBack或者this.IsPostBack或者this.Page.IsPostBack,它们都等价. 1)当通过IE的地址栏等方式打开一个URL时是第一次打开, 当通过页面的提交按钮或能引起提交的按钮以POST的方式提交的服务器时,

ASP.NET中常用的优化性能的方法

1. 数据库访问性能优化  数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响.系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求. 连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能.因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完