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

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

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

第二个问题,为什么要防止页面多次加载,根据上述的加载过程我们知道,当点击页面的提交按钮后,浏览器会重新从服务器加载数据,原来的数据就无效,所以我们只需要用isPostBack的true值即页面第一次加载,客户端的的隐藏控件viewstate将会保存客户端的数据,即不需要重新加载。

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

[plain]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. protected void Page_Load(object sender, EventArgs e)  
  2.     {  
  3.          
  4.         this.txtUserName.Text = "";  
  5.         this.txtUserPwd.Text = "";  
  6.       
  7.         this.btnExit .Attributes .Add("onclick","window.close();");  
  8.     }  
  9.   
  10.     protected void btnLogin_Click(object sender, EventArgs e)  
  11.     {  
  12.         if (this.txtUserName.Text == "a" && this.txtUserPwd.Text == "a")  
  13.         {  
  14.             this.lblMessage.Text = "登录成功";  
  15.         }  
  16.         else {   
  17.             this .lblMessage .Text ="登录失败";  
  18.         }  
  19.   
  20.     }  
显示的界面如下:即第一次输入错误的用户名和密码时会提示登陆失败。

                  

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

                                            

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

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

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. protected void Page_Load(object sender, EventArgs e)  
  2.        {  
  3.           if(!Page.IsPostBack ){  
  4.            this.txtUserName.Text = "";  
  5.            this.txtUserPwd.Text = "";  
  6.            }  
  7.            this.btnExit .Attributes .Add("onclick","window.close();");  
  8.        }  
  9.   
  10.        protected void btnLogin_Click(object sender, EventArgs e)  
  11.        {  
  12.            if (this.txtUserName.Text == "a" && this.txtUserPwd.Text == "a")  
  13.            {  
  14.                this.lblMessage.Text = "登录成功";  
  15.            }  
  16.            else {   
  17.                this .lblMessage .Text ="登录失败";  
  18.            }  
  19.   
  20.        }  
更改后的界面显示

                                                                         

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

结论①    对于使用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问题百出呀真是!此博客仅供初学者理解。如有错误还请指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值