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

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); 将内容写入(画出)到浏览器端

	//在这里判断用户是否是第一次进入页面(即:用户不是在向服务器在提交表单)
    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)就表示用户是提交表单进入,非第一次进入页面
//-------------------------------------------------------------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); //将内容写入(画出)到浏览器端

	//在这里判断用户是否是第一次进入页面(即:用户不是在向服务器在提交表单)
    string ispostback=context.Request["ispostback"];//获取一下name属性为ispostback表单的值。如果能获取到值那么用户就是提交了表单而进入页面。否则用户就是第一次进入页面

    if (string.IsNullOrEmpty(ispostback)) //如果没有获取到name属性为ispostback表单的值。
    {
         context.Response.Write("直接就进入网页了,并没有提交表单");
    }
    else
    {
        context.Response.Write("提交表单后,经过处理后进入的网页(也就是说网页是经过提交表单后重新画出来的)");
    }

}
时间: 2024-07-29 02:27:27

isPostback 的原理及作用(非常简单)的相关文章

isPostback 的原理及作用(很easy)

1.IsPostBack用来推断表单是否是回发. (不是第一次请求),是点击表单的提交button回发过来的.是否是回发与get请求还是Post请求无关.可是普通情况下回发都是Post请求. 一般Get请求都是第一次载入. 2.仅仅有当使用server端表单<form runat="server">IsPostBack才干够使用. 假设使用client表单,则IsPostBack永远都是False.由于当使用server端表单的时候会自己主动生成一个隐藏域,才该隐藏域中,s

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

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

AsyncTask解析(上)——原理分析与超简单demo实现

最近因为在做项目的过程中经常需要进行网络传输,所以打算把几个常用的网络通信框架和GitHub上面的开源框架梳理一遍,本文简单介绍了AsyncTask工作原理以及一个十分简单的应用demo. 当然,了解一个组件,最好是先从Android API文档入手. 那么首先我们来看一下AsyncTask的继承结构: 可以看到,AsyncTask跟Handler一样,是直接从Object类继承的,属于安卓系统包里的基本组件. 再来看看文档中对AsyncTask给出的描述: 从中我们可以得到3个比较重要的信息点

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”/>不用

关于C#泛型作用的简单说明

泛型:即通过参数化类型来实现在同一份代码上操作多种数据类型.泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用. C#泛型的作用概述 C#泛型赋予了代码更强的类型安全,更好的复用,更高的效率,更清晰的约束. 在一个方法中,一个变量的值是可以作为参数,但其实这个变量的类型本身也可以作为参数.泛型允许我们在调用的时候再指定这个类型参数是什么.在.net中,泛型能够给我们带来的两个明显的好处是--类型安全和减少装箱.拆箱. 在一个方法中,一个变量的值是可以作为参数,但其实

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

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

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

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

理解vue实现原理,实现一个简单的Vue框架

参考: 剖析Vue实现原理 - 如何实现双向绑定mvvm Vue.js源码(1):Hello World的背后 Vue.js官方工程 本文所有代码可以在git上找到. 其实对JS我研究不是太深,用过很多次,但只是实现功能就算了.最近JS实在是太火,从前端到后端,应用越来越广泛,各种框架层出不穷,忍不住也想赶一下潮流. Vue是近年出的一个前端构建数据驱动的web界面的库,主要的特色是响应式的数据绑定,区别于以往的命令式用法.也就是在var a=1;的过程中,拦截'='的过程,从而实现更新数据,w

FTP的搭建与虚拟目录作用&lt;之简单讲解&gt;

操作系统:win7 VS2010编写WebService与在IIS的发布<之简单讲解>中我已经说了IIS安装与使用,不明白的可以跳过去看. 1.添加FTP站点 2. 3. 4. 5. zqz上的小黑点代表未启动,记得要启动! 6.打开浏览器 7.添加虚拟目录 8. 9.qq添加成功 10. 11.再次添加一个虚拟目录:aa 12. 13. 14.这里我为什么要添加两个虚拟目录呢?一个是qq一个是aa.这就引出了虚拟目录的重要作用. 虚拟目录就是将其他目录以映射的方式虚拟到该FTP服务器的主目录