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

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

一般Get请求都是第一次载入。

2.仅仅有当使用server端表单<form runat="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 的原理及作用(很easy)的更多相关文章

  1. SQL注入原理讲解,很不错!

    SQL注入原理讲解,很不错! 原文地址:http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html 1.1.1 摘要 日前,国内最大的程序员 ...

  2. 5.Javascript闭包得实现原理和作用

    闭包的实现原理和作用 1.闭包的概念:指有权访问另一个函数作用域中的变量的函数,一般情况就是在一个函数中包含另一个函数. 2.闭包的作用:访问函数内部变量.保持函数在环境中一直存在,不会被垃圾回收机制 ...

  3. 前端知识体系:JavaScript基础-作用域和闭包-闭包的实现原理和作用以及堆栈溢出和内存泄漏原理和相应解决办法

    闭包的实现原理和作用 闭包: 有权访问另一个函数作用域中的变量的函数. 创建闭包的常见方式就是,在一个函数中创建另一个函数. 闭包的作用: 访问函数内部变量.保持函数在环境中一直存在,不会被垃圾回收机 ...

  4. strust1.x中formbean的原理及作用

    from:     http://blog.csdn.net/tuiroger/article/details/3947896 今天张老师讲了一些比较重要的strust标签,<html:link ...

  5. Nginx详解二十:Nginx深度学习篇之HTTPS的原理和作用、配置及优化

    一.HTTPS原理和作用: 1.为什么需要HTTPS?原因:HTTP不安全1.传输数据被中间人盗用.信息泄露2.数据内容劫持.篡改 2.HTTPS协议的实现对传输内容进行加密以及身份验证 对称加密:加 ...

  6. PageCache 在查询中的作用很大

    百度Elasticsearch-产品描述-介绍-百度云 https://cloud.baidu.com/doc/BES/FAQ.html#.51.46.57.73.73.7E.71.4C.6F.AA. ...

  7. hibernate工作原理及作用

    转载自 http://www.cnblogs.com/dashi/p/3597969.html#commentform JAVA Hibernate工作原理及为什么要用 hibernate 简介:hi ...

  8. flash存储器原理及作用是什么?

    flash存储器的工作原理 flash存储器又称闪存(快闪存储器),是一种电可擦可编程只读存储器的形式,是可以在操作中被多次擦或写,EEPROM与高速RAM成为当前最常用且发展最快的两种存储技术.计算 ...

  9. (转)Zookeeper原理和作用

    本周末学习zookeeper,原理和安装配置 本文参考: http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ http:/ ...

随机推荐

  1. ONVIF开发实例

    <开发过过程中的经验总结> ➤工具的使用     (1)首先将文件soapClientLib.c 中"代码"的第二行和第三行注释掉,实际上该文件根本没有用,为了保险起见 ...

  2. [LOJ#2980][THUSCH2017]大魔法师(线段树+矩阵)

    每个线段树维护一个行向量[A,B,C,len]分别是这个区间的A,B,C区间和与区间长度,转移显然. 以及此题卡常,稍微哪里写丑了就能100->45. #include<cstdio> ...

  3. HDU 5700 区间交 离线线段树

    区间交 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5700 Description 小A有一个含有n个非负整数的数列与m个区间.每个区间可以表示为 ...

  4. 读书笔记_Effective_C++_条款三十九:明智而审慎地使用private继承

    private继承的意义在于“be implemented in turns of”,这个与上一条款中说的复合模型的第二层含义是相同的,这也意味着通常我们可以在这两种设计方法之间转换,但书上还是更提倡 ...

  5. interfacer和abstarct class的异同

  6. 在WAMPSERVER下增加多版本的PHP(PHP5.3,PHP5.4,PHP5.5)完美支持。

    WAMPServer可以让开发者在Windows系统下快速搭建WAMP环境,它支持多版本的Apache.MySQL.PHP之间的相互切换,互不影响,对于PHPer开发者来讲极为方便快速. 以下是在WA ...

  7. 最小生成树-普利姆算法eager实现

    算法描述 在普利姆算法的lazy实现中,参考:普利姆算法的lazy实现 我们现在来考虑这样一个问题: 我们将所有的边都加入了优先队列,但事实上,我们真的需要所有的边吗? 我们再回到普利姆算法的lazy ...

  8. Android MMC/EMMC/MTD Partition Layout

    Android devices have a couple of partitions to store different data. The common ones are the recover ...

  9. SEEprog Serial EEPROM programmer

    Features SEEprog is universal programmer of all types of serial EEPROMs in 8-pin package. SEEprog en ...

  10. debuginfo-install glibc-2.17-157.el7.x86_64

    Running transaction Installing : glibc-debuginfo-common-.el7.x86_64 / Installing : glibc-debuginfo-. ...