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







  • 相关阅读:
    [非专业翻译] Mapster
    Js 之TreeGrid使用
    Java 之无限级分类
    Layui 之layedit动态赋值
    Java 之配置修改代码不重启服务器
    Java 之QueryRunner实现增删改查
    Java 之c3p0连接池 + dbutils例子
    PHP 之阿里云短信插件
    Java 之数据库工具类
    Java 之myEclipse破解代码
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6705716.html
Copyright © 2011-2022 走看看