• Ispostback原理


      ispostback,从事asp.net学习和开发的人都很熟悉,这是页面类的一个属性,用来判断页面是提交表单呢,还是首次访问的一个标记。asp.net的运行机制就是提交请求,处理请求,响应请求的过程。提交表单时:提交到服务器的表单元素一定要设置name属性(名字),id是设给Dom和jquery用的,服务只认name。

      现在开发web网站,都是用aspx页面做处理页面的。现在我就来探讨一下该处理页面是如何处理的:

      首先我新建一个ispostback.htm页面,如下:

    <form action="ispostback.ashx"> <!--提交到一般处理程序去处理-->

    <input type ="hidden" name="ispostback" value="true" /> <!--一个隐藏字段,用来提交标记给服务器处理程序-->

    <!--Something else-->
    This
    is ispostback.htm page content!
    <input type="submit" value="提交" /></form>
    该htm页面提交数据到ispostback.ashx一般处理程序去处理。ispostback.ashx做如下处理:
    public void ProcessRequest(HttpContext context)
    {
    context.Response.ContentType
    = "text/html";
    string oldContent = File.ReadAllText(context.Server.MapPath("Ispostback.htm"));
    context.Response.Write(oldContent);
    //读取ispostback.htm作为模版,重新画一个。

    string ispostback=context.Request["ispostback"];//接受来自htm页面提交的隐藏字段
    //如果能取得提交的内容,则表明此次处理是提交表单请求。
    if (ispostback == "true")
    {
    context.Response.Write(
    "提交表单进入(是postback的)");
    }
    else
    {
    context.Response.Write(
    "首次进入!(不是postback的)");
    }
    }

    这样的话,如果你首次在浏览器中访问ispostback.ashx,打印出的是ispostback.htm的内容和一个首次进入(不是postback)的标记。点击按钮后会显示提交表单进入的。这就是asp.net的ispostback的原理。

    ashx是一个服务器处理程序,页面form提交到服务器的数据都是调用他来处理,其实aspx也是处理程序,只不过是通过.Net封装之后的处理程序,继承自ashx。

      我猜测:aspx页面就是一个模版,相当于上面的ispostback.htm,里面封装了ispostback的隐藏字段,而aspx.cs就是处理程序。提交的处理请求都是给它处理,然后再读模版,把要该的内容画回去。

      把我所学所想学出来,欢迎大家指正,谢谢。

    作者:GY小小鸟
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    editplus设置自动换行方法 editplus自动换行设置步骤
    com.google.gson.stream.MalformedJsonException
    系统架构设计师 笔记1
    微信文档采用第三方方式打开选择qq
    手机不弹toast解决方法
    Excel 如何快速切换到最后一行
    vue系列4:引入插件
    vue系列3:引入css和js
    vue系列2:npm install 命令详解
    vue系列1:创建vue项目
  • 原文地址:https://www.cnblogs.com/YangFengHui/p/2026824.html
Copyright © 2020-2023  润新知