isPostback 的原理及作用(很easy)
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)的更多相关文章
- SQL注入原理讲解,很不错!
SQL注入原理讲解,很不错! 原文地址:http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html 1.1.1 摘要 日前,国内最大的程序员 ...
- 5.Javascript闭包得实现原理和作用
闭包的实现原理和作用 1.闭包的概念:指有权访问另一个函数作用域中的变量的函数,一般情况就是在一个函数中包含另一个函数. 2.闭包的作用:访问函数内部变量.保持函数在环境中一直存在,不会被垃圾回收机制 ...
- 前端知识体系:JavaScript基础-作用域和闭包-闭包的实现原理和作用以及堆栈溢出和内存泄漏原理和相应解决办法
闭包的实现原理和作用 闭包: 有权访问另一个函数作用域中的变量的函数. 创建闭包的常见方式就是,在一个函数中创建另一个函数. 闭包的作用: 访问函数内部变量.保持函数在环境中一直存在,不会被垃圾回收机 ...
- strust1.x中formbean的原理及作用
from: http://blog.csdn.net/tuiroger/article/details/3947896 今天张老师讲了一些比较重要的strust标签,<html:link ...
- Nginx详解二十:Nginx深度学习篇之HTTPS的原理和作用、配置及优化
一.HTTPS原理和作用: 1.为什么需要HTTPS?原因:HTTP不安全1.传输数据被中间人盗用.信息泄露2.数据内容劫持.篡改 2.HTTPS协议的实现对传输内容进行加密以及身份验证 对称加密:加 ...
- PageCache 在查询中的作用很大
百度Elasticsearch-产品描述-介绍-百度云 https://cloud.baidu.com/doc/BES/FAQ.html#.51.46.57.73.73.7E.71.4C.6F.AA. ...
- hibernate工作原理及作用
转载自 http://www.cnblogs.com/dashi/p/3597969.html#commentform JAVA Hibernate工作原理及为什么要用 hibernate 简介:hi ...
- flash存储器原理及作用是什么?
flash存储器的工作原理 flash存储器又称闪存(快闪存储器),是一种电可擦可编程只读存储器的形式,是可以在操作中被多次擦或写,EEPROM与高速RAM成为当前最常用且发展最快的两种存储技术.计算 ...
- (转)Zookeeper原理和作用
本周末学习zookeeper,原理和安装配置 本文参考: http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ http:/ ...
随机推荐
- django中缓存配置
# ======缓存配置====== CACHES = { ## 虚拟缓存,开发调试版本,此为开始调试用,实际内部不做任何操作 # 'default': { # 'BACKEND': 'django. ...
- 【set】【可持久化Trie】The 16th UESTC Programming Contest Preliminary K - Will the circle be broken
题意:You are given an array A of N non-negative integers and an integer M. Find the number of pair(i,j ...
- 【漏洞预警】Intel爆CPU设计问题,导致win和Linux内核重设计(附测试poc)
目前研究人员正抓紧检查 Linux 内核的安全问题,与此同时,微软也预计将在本月补丁日公开介绍 Windows 操作系统的相关变更. 而 Linux 和 Windows 系统的这些更新势必会对 Int ...
- [POI2015]Pustynia
[POI2015]Pustynia 题目大意: 给定一个长度为\(n(n\le10^5)\)的正整数序列\(a\),每个数都在\(1\)到\(10^9\)范围内,告诉你其中\(s\)个数,并给出\(m ...
- TF-timeline的使用经验记录
timeline的使用经验记录:https://towardsdatascience.com/howto-profile-tensorflow-1a49fb18073d 看了TF-summit2018 ...
- hdoj 4445 Crazy Tank 物理题/枚举角度1
Crazy TankTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- ARM JTAG 20
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0499b/BEHEIHCE.html he ARM JTAG 20 co ...
- tomcat ssi配置及升级导致ssi include错误问题解决
最近tomcat升级版本时,遇到了ssi解析的问题,记录下解决的过程,还有tomcat ssi配置的要点. tomcat 配置SSI的两种方式 Tomcat有两种方式支持SSI:Servlet和Fil ...
- Linux下的两个经典宏定义 转
http://www.linuxidc.com/Linux/2016-08/134481.htm http://www.linuxidc.com/Linux/2013-01/78003.htm htt ...
- Python机器学习实战<一>:环境的配置
详细要学习的书籍就是<机器学习实战>Machine Learning in Action,Peter Harrington Windows下要安装3个文件,各自是; 1.Python(因为 ...