IsPostback的原理

ispostback:就是判断页面是首次加载的,还是数据回发(有get或者post请求过的)后的页面。上代码吧,直观点。



1.asp.net页面


<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button" />
    </div>
    </form>
</body>

 protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                Response.Write("这是回发后的页面!"); //点击button1控件后出现这个
            }
            else
            {
                Response.Write("这是首次加载的页面!"); //第一次预览出现这个
            }
        }



2.html页面



(1)由于是纯粹的html页面,即便点击提交也无法,回发数据,也就是html页面无法获取回发过来的值。所以ispostback为false。


<form action="WebForm1.aspx" method="post">
<input id="Submit1" type="submit" value="submit" />
</form>

protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                Response.Write("这是回发后的页面!");
            }
            else
            {
                Response.Write("这是首次加载的页面!"); //第一次预览出现这个,点击submit控件后还出现这个
            }
        }



(2)这里加了一个隐藏的viewstate,回发过来的数据存放在viewstate,完成了数据回发,ispostback的值也就为true。如果你疑惑如果下次还想要首次加载的数据怎么办,我告诉你,下次读取数据直接从viewstate中读取,不用再次发出请求。


<form action="WebForm1.aspx" method="post">
<input type="hidden" name="__viewstate" />
<input id="Submit1" type="submit" value="submit" />
</form>

 protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                Response.Write("这是回发后的页面!"); //点击submit控件后又出现这个。
            }
            else
            {
                Response.Write("这是首次加载的页面!"); //第一次预览出现这个。
            }
        }



小结:其是asp.net页面中也有一个隐藏的viewstate字段,通过在页面上查看源代码就能看出来,一般为了减少服务器的压力,我们通常会把viewstate禁用掉,那么将不会用到ispostback判断是否是数据回发过的页面,那将每次执行以下后台代码,如果是读取数据库中的数据,那么也将每次都要读取一下,这里你可能会担心数据库的压力过大,这里我们还有另外的解决办法,而并非使用viewstate,那就是使用缓存技术解决这里的问题。

时间: 2024-11-05 16:03:26

IsPostback的原理的相关文章

isPostback 的原理及作用(很easy)

1.IsPostBack用来推断表单是否是回发. (不是第一次请求),是点击表单的提交button回发过来的.是否是回发与get请求还是Post请求无关.可是普通情况下回发都是Post请求. 一般Get请求都是第一次载入. 2.仅仅有当使用server端表单<form runat="server">IsPostBack才干够使用. 假设使用client表单,则IsPostBack永远都是False.由于当使用server端表单的时候会自己主动生成一个隐藏域,才该隐藏域中,s

isPostback 的原理及作用(非常简单)

HTML页面 <html> <form action="Page1.aspx"> <input type="text" name="UserName" value="Jim"> <input type="submit" value="提交"> </form> </html> ---------------------

【深入ASP.NET原理系列】--ASP.NET页面生命周期

前言 ASP.NET页面运行时候,页面将经历一个生命周期,在生命周期中将执行一系列的处理步骤.包括初始化.实例化控件.还原和维护状态.运行时间处理程序代码以及进行呈现.熟悉页面生命周期非常重要,这样我们才能在生命周期的合适阶段编写代码.如果我们能在写代码的时候想着我们现在是在做生命周期的哪一步那将是非常好的. 你可能会说我不清楚还不是一样写代码,反正每次都在Page_load里面写代码 然后页面就出来了我管那么多干什么.所谓知其然如果能知其所以然岂不是更吊?我个人认为做ASP.NET B/S开发

.NET开发者不要再抱怨.NET工资低[田忌赛马]【一个刚入行不久的角度谈.NET工资】

最近博客园里面很多人都说.NET不行,其实你们说的.NET不行也就是说.NET的工资比不上Java,PHP,移动开发等 本人性格还没有修炼到淡定,所以下面可能屡有偏激狂妄之词,也请同仁多多海涵. 这篇博客是写给那些刚入.NET,同时喜欢.NET不准备转的人看的,搞好自己,相信自己!要转的自己转去吧!下面从头到尾都没有谁好说不好的!只是谈薪水问题! 咱们大多数人搞开发都是要赚钱养家的.我们都不说是为了中华软件而崛起的口号而编码,这样的口号我也喊不出来. 我们都是为了工资,为了赚钱养家.兴趣也是一部

【非月结贴】.NET开发者不要再抱怨.NET工资了,你真的行吗?--从一个刚入行不久的角度看.NET工资

最近博客园里面很多人都说.NET不行,其实你们说的.NET不行也就是说.NET的工资比不上Java,PHP,移动开发等 本人性格还没有修炼到淡定,所以下面可能屡有偏激狂妄之词,也请同仁多多海涵. 咱们大多数人搞开发都是要赚钱养家的.我们都不说是为了中华软件而崛起的口号而编码,这样的口号我也喊不出来. 我们都是为了工资,为了赚钱养家.兴趣也是一部分.看了博客园这些喷.NET的文章,在这里我也想站在一个刚入门的人的立场上来谈一下这个问题 本人作为一个大四软件工程专业的学生,刚入行不久,.NET从大一

.Net 面试题整理(一)

.Net 面试题整理(一) 好久的资料了,拿出来分享给大家,主要是记录一些面试题整理. Main函数是什么?在程序中使用Main函数有什么需要注意的地方? Q:程序的入口函数!函数名字不能改变:一个程序中有且只有一个Main函数. CLR是什么?程序集是什么?当运行一个程序集的时候,CLR做了什么事情? Q:Common Language RunTime 公共语言运行时. 编译后代码的集合.(包括exe和dll). 加载项目里所有的类到内存,并找到其中的主函数,并作为默认的启动函数调用执行. 值

.net学习之母版页执行顺序、jsonp跨域请求原理、IsPostBack原理、服务器端控件按钮Button点击时的过程、缓存、IHttpModule 过滤器

1.WebForm使用母版页后执行的顺序是先执行子页面中的Page_Load,再执行母版页中的Page_Load,请求是先生成母版页的控件树,然后将子页面生成的控件树填充到母版页中,最后输出 2.WebForm使用母版页进行登录时候的验证 //新建一个页面父类 public abstract class BasePage:Page { protected void Page_Load(object sender, EventArgs e) { //1.身份验证的方法 Session if (Se

IsPostBack原理详解

这个属性相信大家一定经常用吧  判断是否为回发 (切记这是判断是否回发  而听到很多人说这是判断是否第一次加载页面  还有的说是否为刷新 ) 很多人说做项目时  pageload事件里 都要加上 protectedvoid Page_Load(object sender, EventArgs e) { if (!IsPostBack) { } } 但是确不太理解原因   说加上这个肯定没错 可是 上篇的例子里 不就错了么? 所以 一定要理解原理~~ 为了把这个说清楚 这里不用asp.net页面

isPostBack原理

1 /// <summary> 2 /// 为了区分是第一次直接进入页面还是点击提交以后进入页面,在form中增加一个隐藏字段: 3 // <input type="hidden" name="ispostback" value="true" />, 4 /// 如果能够从Request中读取到ispostback=true就说明是点击提交以后重新进入ashx, 5 /// 否则就是第一次进入ashx.ispostback