zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    用Python完成一个汇率转换器
    鸿蒙如何用JS开发智能手表App
    鸿蒙如何用JS开发智能手表App
    SAP Spartacus SplitViewComponent Migration 的一个具体例子
    SAP Spartacus B2B 页面 Popover Component 的条件显示逻辑
    SAP Spartacus 升级时关于 schematics 的更新
    SAP Spartacus B2B 页面 Disable 按钮的显示原理
    SAP Spartacus B2B 页面 Disable Confirmation 对话框的显示原理
    通过 Feature Level 动态控制 SAP Spartacus 的页面显示
    SAP Commerce Cloud Build Manifest Components
  • 原文地址:https://www.cnblogs.com/Jian-Zhang/p/6054255.html
Copyright © 2011-2022 走看看