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:/ ...
随机推荐
- 关于php上传文件过大的表单回填
也许标题有点绕口,有点无法让人理解.请原谅博主,语文学的不好,都赖体育老师. 问题场景重现:在某次迭代中,接到这样一个需求:当新建或编辑一个Bug(包含附件以及其他字段)上传附件过大时,退回到编辑页面 ...
- XShell通过中转服务器直接连接目标服务器
最近由于公司生产环境的变化,使得我们不能使用自己的机器连接到生产环境去,而是要通过跳板机中转才可以连接.于是今天尝试使用 XShell 通过跳板机直接转接到生产环境. 一.使用代理方式 首先填写连接信 ...
- 当你的静态资源CDN挂掉了该怎么办?
都知道使用静态的CDN引入jQuery等一些js包的时候,会提升网页的性能,那么,如果你引入CDN的地址挂掉了,那么项目同样也会挂掉,所以我们需要在引入的时候添加一个判断.如下: <script ...
- BZOJ3589动态树
**错误改了一上午. 先做熟练泼粪 k<=5,因此我们可以模拟这个过程,在线段树上把标记建出来然后pushup时候更新就好了. By:大奕哥 #include<bits/stdc++.h& ...
- Python知识(1)----基础入门和进阶总结。
今天把Python的语法过了一遍,学习了慕课网上的教程,简单易懂,1个小时就可以入门Python了.Python有两个主要的版本,Python2.7,Python3.5,后面的版本,改动较大,编写的程 ...
- 在一台服务器上搭建多个项目的SVN
需求:一台机子,多个项目,项目之间用户独立不可以相互访问文件 思路:在机子上设置多个代码仓库,用不同的端口号加一区分 实现: 首先安装SVN,我这里使用的是TortoiseSVN 首先创建多个SVN代 ...
- Access-Control-Allow-Origin,跨域
1.浏览器的同源安全策略 浏览器只允许请求当前域的资源,而对其他域的资源表示不信任.那怎么才算跨域呢? 请求协议http,https的不同 域domain的不同 端口port的不同 好好好,大概就是这 ...
- C#(静态String类)
[转]http://blog.csdn.net/angelazy/article/details/8501776 C#中提供了比较全面的字符串处理方法,很多函数都进行了封装为我们的编程工作提供了很大的 ...
- UITextView 详解
UITextView 边框的设置 设置光标的位置 导入QuartzCote框架: #import <QuartzCore/QuartzCore.h> textView.layer. ...
- MyEclipse Web项目调试
1.发布项目 2.启动服务 服务有两种启动方式,Run Server和Debug Server Run Server是运行模式,Debug Server是调试模式 使用Debug Server模式启动 ...