isPostback 的原理及作用(很easy)

1.IsPostBack用来推断表单是否是回发。

(不是第一次请求),是点击表单的提交button回发过来的。是否是回发与get请求还是Post请求无关。可是普通情况下回发都是Post请求。

一般Get请求都是第一次载入。
2.仅仅有当使用server端表单IsPostBack才干够使用。

假设使用client表单,则IsPostBack永远都是False.由于当使用server端表单的时候会自己主动生成一个隐藏域,才该隐藏域中,server写入了一些内容。通过这些内容就能够推断是否是回发。

假设使用的是普通html表单。则须要自己写代码来推断是否是回发。
3.IsPostBack的使用方式。为什么要使用IsPostBack
降低数据载入的次数。避免了每次点击button回发都又一次载入一次数据。

HTML页面

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

-------------------------------------------------------------Page1.aspx处理页面(一般处理程序)

public void ProcessRequest(HttpContext context)
{context.Response.ContentType = "text/html";string mappath = context.Server.MapPath("Page1.aspx");//获取Page1.aspx的路径string con = System.IO.File.ReadAllText(mappath);  //读取mappath的内容context.Response.Write(con); 将内容写入(画出)到浏览器端//在这里推断用户是否是第一次进入页面(即:用户不是在向server在提交表单)
string name=context.Request["UserName"];//获取一下name属性为UserName表单的值。

假设能获取到值那么用户就是提交了表单而进入页面。否则用户就是第一次进入页面

if (string.IsNullOrEmpty(name)) //假设没有获取到name属性为UserName表单的值。{context.Response.Write("直接就进入网页了,即用户第一次进入页面。并没有提交表单");
}
else
{context.Response.Write("提交表单后。经过处理后进入的网页(也就是说网页是经过提交表单后又一次画出来的)");
}

}

那么如今问题就来了, 每次去取有name 属性的表单的值,以能不能获取到这个值(推断是否为空)来推断用户是否为提交进入页面。

这样是有问题的,假如这个有name属性表单的值本身就是同意为空呢? 所以我们这里就加入一个隐藏字段hidden 将他的name 属性设为isPostback ,value值永远设为true(当然你也能够设置其它的值,仅仅要不为空)

这样用户每次提交表单的时候,无论其它有name属性的表单值是否为空,hidden这个表单的值是一定能提交出去,而且能获取到这个值的(由于我已经将hidden表单的值设为一定不能为空) 那么我们就用这个hidden表单的的值是否为空来推断用户是否为提交表单而进入页面(即:用户不是第一次进入页面)

<html>
<form action="Page1.aspx">
<input type="hidden" name="ispostback" value="true"><input type="text"  name="UserName" value="">
<input type="submit" value="提交">
</form>
</html>

//if(!ispostback)就表示用户是第一次进入页面。if(ispostback)就表示用户是提交表单进入,非第一次进入页面

// 假设isPostback==true 那么是提交进入 ; 即:if(ispostback) 提交进入 否则第一次进入

//-------------------------------------------------------------Page1.aspx处理页面(一般处理程序)

public void ProcessRequest(HttpContext context)
{context.Response.ContentType = "text/html";string mappath = context.Server.MapPath("Page1.aspx");//获取Page1.aspx的路径string con = System.IO.File.ReadAllText(mappath);  //读取mappath的内容context.Response.Write(con); //将内容写入(画出)到浏览器端//在这里推断用户是否是第一次进入页面(即:用户不是在向server在提交表单)
string ispostback=context.Request["ispostback"];//获取一下name属性为ispostback表单的值。假设能获取到值那么用户就是提交了表单而进入页面。否则用户就是第一次进入页面//string.IsNullOrEmpty()是推断一个值是否为空。假设为空则返回true 否则返回false
if (string.IsNullOrEmpty(ispostback)) //假设没有获取到name属性为ispostback表单的值。{context.Response.Write("直接就进入网页了。并没有提交表单");
}
else
{context.Response.Write("提交表单后,经过处理后进入的网页(也就是说网页是经过提交表单后又一次画出来的)");
}//if(ispostback==null)
//{
//    context.Response.Write("直接就进入网页了,并没有提交表单");
//}
//else
//{
//    context.Response.Write("提交表单后。经过处理后进入的网页(也就是说网页是经过提交表单后又一次画出来的)");
//}
}

IsPostBack相关推荐

  1. IsPostBack的使用

    protected void Page_Load(object sender, EventArgs e){//当前用户通过Index.aspx页面中"添加用户"链接跳转到该页面时, ...

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

    1.WebForm使用母版页后执行的顺序是先执行子页面中的Page_Load,再执行母版页中的Page_Load,请求是先生成母版页的控件树,然后将子页面生成的控件树填充到母版页中,最后输出 2.We ...

  3. ASP.NET(一):Reques对象和Response对象的区别,以及IsPostBack属性的用法

    导读:在ASP.NET的学习中,初步认识了其6大对象(严格说来只能算是属性):Request,Response,Application,Session,Server,OjectContext.这些对象 ...

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

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

  5. Page类的IsPostBack原理

    IsPostBack是属于page类下面 只读属性(get).其中上面[]包着的 简称为特性 简单说就是代码执行时 运行[]里面的对象类方法或者属性(内部利用反射原理). //// 摘要:// 获取一 ...

  6. asp.net访问sqlserver获取数据、IsPostBack属性和VS可视化调试的概念

    新建一个asp.net网站:sqlserver中有如下一张表: 新建一个页面, demo1.aspx:在页面上添加一个GridView控件: demo1.aspx.cs代码: using System ...

  7. .net通过一般处理程序模拟用户控件数据保持、Ispostback 【第二版将html与ashx文件分开】...

    直接上代码: HTML代码,其中表单中input标签中的value值首先用一个占位符占位,然后在ashx中将其替换 <html xmlns="http://www.w3.org/199 ...

  8. ASP.NET的Page.IsPostBack 属性详细说明(转)

    转自:http://www.donews.net/shanyou/archive/2004/04.aspx 现在从对ASP.NET页面的执行顺序开始,体会一下B/S结构的程序的特点,下图是ASP.NE ...

  9. 浅析ASP.NET的Page.IsPostBack 属性

    浅析ASP.NET的Page.IsPostBack 属性 http://www.sina.com.cn 2008年05月06日 11:33  IT168.com [IT168技术文档] 现在从对ASP ...

  10. 浅析ASP.NET的Page.IsPostBack 属性http://www.sina.com.cn 2008年05月06日 11:33 IT168.com

    浅析ASP.NET的Page.IsPostBack 属性 http://www.sina.com.cn 2008年05月06日 11:33  IT168.com [IT168技术文档] 现在从对ASP ...

最新文章

  1. 在机器学习中处理大量数据!
  2. 《算法设计编程实验:大学程序设计课程与竞赛训练教材》——2.3 构造法模拟的实验范例...
  3. 看完就懂系列—动态规划
  4. Toad for Oracle工具的使用(二)
  5. 第九十九期:可以编写代码的代码:代码生成的利与弊
  6. CSMA/CD协议分析笔记
  7. 春节档总票房已破50亿 情人节单日票房超14亿
  8. python与mongodb更新_Python对MongoDB增删改查
  9. 【OP-TEE】TA的加载(超详细)
  10. Internet Download Manager(最新版win/mac)最快下载器工具使用教程
  11. 虚拟内存和缺页,为什么使用一键加速会使你的电脑变慢?
  12. ambarella H2 添加文件到ext4文件系统
  13. Go 调用 Java 方案和性能优化分享
  14. WebAssembly:2023年的5个预测
  15. 列表(list)使用方法详解
  16. 拳头的国人动画师,是这样让《英雄联盟》里的角色变成“戏精”的
  17. FFmpeg音频解码-音频可视化
  18. Win10 如何显示所有任务栏图标,不进行隐藏
  19. python抠图太模糊,讲实话,我会Python之后!我都不屑用PS了!Python抠图太方便了!...
  20. 揭秘!一个无线电黑客的玩具

热门文章

  1. DFMEA步骤二:结构分析
  2. MathType初级教程:怎么安装MathType
  3. 【MATLAB统计分析与应用100例】案例015:matlab读取Excel数据,进行值聚类分析
  4. c/c++初学者用什么软件比较好
  5. JavaScript高级程序设计学习笔记(二)
  6. TA进阶实例36(MMD pmx导入Unreal流程)
  7. 2022年危险化学品生产单位安全生产管理人员试题模拟考试平台操作
  8. 互联网晚报 | 7月10日 星期天 | 快手官宣:7月18日周杰伦独家直播;​400亿额度,秒光!7月总票房破10亿...
  9. windows下namp的基本操作命令
  10. 安装NVIDIA显卡驱动