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("提交表单后。经过处理后进入的网页(也就是说网页是经过提交表单后又一次画出来的)");
    //}

}
时间: 2024-08-08 01:28:34

isPostback 的原理及作用(很easy)的相关文章

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

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

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

SQL注入原理讲解,很不错! 原文地址:http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html 1.1.1 摘要 日前,国内最大的程序员社区CSDN网站的用户数据库被黑客公开发布,600万用户的登录名及密码被公开泄露,随后又有多家网站的用户密码被流传于网络,连日来引发众多网民对自己账号.密码等互联网信息被盗取的普遍担忧. 网络安全成为了现在互联网的焦点,这也恰恰触动了每一位用户的神经,由于设计的漏洞导致了不可收拾的恶果,验证了一句话

用Emacs写cnblogs-从此写blog变的很easy!

*/--> 用Emacs写cnblogs-从此写blog变的很easy! Table of Contents 1 需求说明 2 解决问题 3 结语 1 需求说明 在进入正题前还是先扯些废话吧!这Emacs还是大二的时候自己玩linux的时候,我的小学同学给我介绍的,第一次就教我安装,还把他的配置文件分享给我了,[虽然都是很简单的配置,俺这同学不太喜欢弄这些虚无的东西,可我就比较喜欢].Orgmode是大四的时候,自己找老师问关于Emacs的东西的时候,我的好好东老师给我推荐的,这才进入了orgm

路由器原理及作用以及交换机

路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程[1]  .路由工作在OSI参考模型第三层--网络层的数据包转发设备.路由器通过转发数据包来实现网络互连.虽然路由器可以支持多种协议(如TCP/IP.IPX/SPX.AppleTalk等协议),但是在我国绝大多数路由器运行TCP/IP协议.路由器通常连接两个或多个由IP子网或点到点协议标识的逻辑端口,至少拥有1个物理端口.路由器根据收到数据包中的网络层地址以及路由器内部维护的路由表决定输出端口以及下一跳地址,并且重写链路

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

闭包的实现原理和作用 闭包: 有权访问另一个函数作用域中的变量的函数. 创建闭包的常见方式就是,在一个函数中创建另一个函数. 闭包的作用: 访问函数内部变量.保持函数在环境中一直存在,不会被垃圾回收机制处理 因为函数内部声明 的变量是局部的,只能在函数内部访问到,但是函数外部的变量是对函数内部可见的,这就是作用域链的特点了. 子级可以向父级查找变量,逐级查找,找到为止 因此我们可以在函数内部再创建一个函数,这样对内部的函数来说,外层函数的变量都是可见的,然后我们就可以访问到他的变量了. <scr

strust1.x中formbean的原理及作用

from:     http://blog.csdn.net/tuiroger/article/details/3947896 今天张老师讲了一些比较重要的strust标签,<html:link>,<html:text>.formbean的原理及作用,还有formbean表单校验以及表单校验后如何处理,并进行了举例验证说明,把例子代码敲了一遍,颇有收获. <html:link>标签的三个好处:使用<html:link action=“/action”/>不用

ThreadLocal的原理、作用、使用弱引用原因、应用举例

一. 原理 ThreadLocal就是一个类,他有get.set方法,可以起到一个保存.获取某个值的作用.但是这个类的get.set方法有点特殊,各个线程调用他的get.set操作是互不干扰的,具体原因在于他的方法实现: public T get() { Thread t = Thread.currentThread(); //先确定调用我的线程 ThreadLocalMap map = getMap(t); //根据调用我的线程,找到这个线程的ThreadLocalMap对象 if (map

直观明了的总结TCP滑动窗口机制原理及作用

一. 原理 TCP是全双工通信,因此每一方的滑动窗口都包括了接收窗口+发送窗口,接收窗口负责处理自己接收到的数据,发送窗口负责处理自己要发送出去的数据.滑动窗口的本质其实就是维护几个变量,通过这些变量将TCP处理的数据分为几类,同时在发送出一个报文.接收一个报文对这些变量做一定的处理维护. 发送窗口如上图 : (1)N是发送窗口的起始字节,也就是说:字节序号 < N的字节都已经发送出去且已经收到ack,确认无误了: (2)nextSeq就是下一次发送报文的首部Seq字段(Seq即第一个字节的序号

spring学习9 Spring工作原理及其作用

1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作. 2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. 3.DispatcherServlet请请求提交到目标Controller 4.Controller进行业务逻辑处理后,会返回一个ModelAndView 5.Dispathcher查询一个或多个ViewResolver视图解析器,找到Mo