ASP.NET中防止页面多次加载的IsPostBack属性

查查msdn,上边有IsPostBack的定义:获取一个值,该值指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。如果是为响应客户端回发而加载该页,则为 true;否则为 false

首先,有个问题,web页面是如何加载的,客户端浏览器服务器端发送请求,服务器端将请求发送到客户端,服务器端将释放客户端的请求。

第二个问题,为什么要防止页面多次加载,根据上述的加载过程我们知道,当第二次发送同样请求时,服务器端没有保存原来客户端的数据,那么展现给客户端浏览器为空或者仍然是原来的信息。

例如一个简单的登陆代码如下:

    protected void Page_Load(object sender, EventArgs e)
        {

            this.txtUserName.Text = "";
            this.txtUserPwd.Text = "";

            this.btnExit .Attributes .Add("onclick","window.close();");
        }

        protected void btnLogin_Click(object sender, EventArgs e)
        {
            if (this.txtUserName.Text == "a" && this.txtUserPwd.Text == "a")
            {
                this.lblMessage.Text = "登录成功";
            }
            else {
                this .lblMessage .Text ="登录失败";
            }

        }

显示的界面如下:即第一次输入错误的用户名和密码时会提示登陆失败。

当我重新输入正确的用户名和密码时:页面还是会提交失败。

原因在于,点击登录后系统没有重新作出回应。

解决方案:将上述代码改为:

 protected void Page_Load(object sender, EventArgs e)
        {
           if(!Page.IsPostBack ){
            this.txtUserName.Text = "";
            this.txtUserPwd.Text = "";
            }
            this.btnExit .Attributes .Add("onclick","window.close();");
        }

        protected void btnLogin_Click(object sender, EventArgs e)
        {
            if (this.txtUserName.Text == "a" && this.txtUserPwd.Text == "a")
            {
                this.lblMessage.Text = "登录成功";
            }
            else {
                this .lblMessage .Text ="登录失败";
            }

        }

更改后的界面显示

 
                                                  

整理了现阶段能看懂的几种网上总结:

结论①    对于使用Server.Transfer进行迁移时迁移到的页面其IsPostBack=false。

结论②    Post方式如果Request中没有请求值,即Request.Form =null则IsPostBack=false;Get方式如果Request中没有请求值,即Request.QueryString =null则IsPostBack=false。

结论③    如果QueryString或Form虽然有请求值,但是QueryString或Form中的

Key“__VIEWSTATE”和“__EVENTTARGET”和“__VIEWSTATEFIELDCOUNT”,并且没有键为“null”,值以“__VIEWSTATE”开头并且也没有值为“__EVENTTARGET”的键值对,则IsPostBack=false。

结论④    使用Response.Redirect方式向自画面迁移时,此时IsPostBack=false。

刚开始接触asp.net问题百出呀真是!此博客仅供初学者理解。如有错误还请指正。

时间: 2024-08-24 01:19:46

ASP.NET中防止页面多次加载的IsPostBack属性的相关文章

asp.net中TreeView的大数据加载速度优化

由于数据量太大,加载树时间很长,所以进行了优化 前台 .aspx <asp:Panel ID="Panel2" runat="server" Height="600px" ScrollBars="Auto"> <asp:TreeView ID="TreeView1" runat="server" ForeColor="Black" OnTreeNod

ASP.NET MVC3 Razor 调试与预加载

目录(?)[-] 获取服务器信息 FormsAuthenticationSlidingExpiration 属性 MVC3预加载 在ASP.NET MVC3开发中,调试中怎么也是不可缺少的,那对于使用RAZOR的开发者而言, 如何调试,这也是需要需要掌握的内容,本节就介绍本块内容. MVC3 RAZOR中调试 如你所知,对于发布后的网站,调试往往是一件非常悲剧的事. 看看RAZOR中强大的打印功能 @ObjectInfo.Print(this.Context.User) 获取服务器信息 @Ser

各浏览器对页面外部资源加载的策略

这个总结来源于一次优化的请求,最初某个页面的加载十分缓慢,load事件迟迟无法触发,因此希望可以通过对静态文件分域名等方式对页面的外部资源进行优化,拿得load事件尽可能早地触发. 于是我查看了页面的源码,并对外部资源进行了整理,基于下面2个理念画出了一个推测的瀑布图: 1.浏览器对同一个域只能并发2个HTTP请求 – 网上盛传已久.2.javascript文件的加载会阻塞浏览器其他资源的加载 – 同样网上盛传已久. 然而,当我看到各浏览器中实际的瀑布图时,我知道自己又犯了一个简单的错误:太过相

jquery.imgpreload.min.js插件实现页面图片预加载

页面分享地址: http://wenku.baidu.com/link?url=_-G8miwbgDmEj6miyFtjit1duJggBCJmFjR2jky_G1VftD9eS9kwGOlFWAORk2_fotM4RbzRvtcaiQu2y_BU3Gpj0rYRy_EWrgXEuFeja0q 页面分享地址:http://www.jb51.net/article/21987.htm Javascript , Jquery 实现页面图片预加载百分比展现 如果需要在页面初始加载时显示加载进度.主要是

当滚动条滚动到页面底部自动加载增加内容的js代码

这篇文章主要介绍了如何使用javscript实现滚动条滚动到页面底部自动加载增加页面内容,需要的朋友可以参考下..1,注册页面滚动事件,window.onscroll = function(){ }; 2,相关获取页面高度.滚动条位置.文档高度的函数: 复制代码 代码如下://获取滚动条当前的位置 function getScrollTop() { var scrollTop = 0; if (document.documentElement && document.documentEle

Egret制作Loading页面及分步加载资源教程

我们都知道,当游戏越做越大,资源越来越多的时候,加载资源会造成大量时间的浪费.为避免加载资源时游戏黑屏,导致玩家误认为游戏非正常运行,Loading界面起到至关重要的作用.今天就为大家带来用Egret制作Loading页面及分步加载资源的教程. 本文涉及以下内容: · RES加载Loading界面所使用的资源· 分步加载资源 加载LoadingUI所需要的资源 把LoadingUI所需要的资源配置到default.res.json的loading组中,组名任意.如下: 在Main.ts修改loa

页面图片懒加载

一.页面滚动加载图片的理解 当一个网页含有大量的图片的时候,往往在打开页面的加载的很慢,如现在的大型电商.新闻.微博等,如果一下加载整个网页的所有图片,那会是一个缓慢的过程,要想快速的浏览网页,我们这时候就需要用到了在滚动或滑动页面的时候加载图片的方法.即图片懒加载!!! 二.实现懒加载的思路 当打开页面的时候,刚开始不给显示图片的位置放图片,等滚动或滑动到哪里的时候在获取图片.当然如果我们不给图片src中放图片,就会出现先找不到图片的提示,这样肯定是不行的. 所以我们在放图片的位置刚开始让一张

滑轮滚动到页面底部ajax加载数据

滚动下拉到页面底部加载数据是很多瀑布流网站的做法,那来看看配合jsonp是如何实现的吧 当然本例子采用的是jquery库,后期会做成原生js.本例的数据调用的是锋利的jquery一书提供的一段json. 首先要先判断页面怎么样才是滚动到底部,也就是scrollTop+window的height是否大于document的height,jquery如下代码: $(window).scrollTop()+$(window).height()>=$(document).height(): 再给windo

页面资源预加载(Link prefetch)

不管是浏览器的开发者还是普通web应用的开发者,他们都在做一个共同的努力:让Web浏览有更快的速度感觉.有很多已知的技术都可以让你的网站速度变得更快:使用CSS sprites,使用图片优化工具,使用.htaccess设置页面头信息和缓存时间,JavaScript压缩,使用CDN等.我曾经介绍过本站上使用的一些速度优化技术.而在HTML5里,出现了一个新的用来优化网站速度的新功能:页面资源预加载/预读取(Link prefetch). 页面资源预加载/预读取(Link prefetch)是什么?