asp.net - IsPostback 在技术上是如何工作的?

标签 asp.net http-headers httpverbs ispostback

我目前遇到一个奇怪的问题,即当我单击简单回发到同一页面的 asp.net 按钮时,除 Google Chrome 之外的所有浏览器都将 Page_Load 事件中对 IsPostback 的调用注册为 true。

这促使我尝试发现 ASP .Net 页面中的 IsPostback 属性是如何在技术上实现的,这是我正在努力寻找的东西。

迄今为止,我的想法是它可能与以下内容有关;

  • 请求动词类型是 POST 而不是 GET。
  • 包含 Viewstate 信息的隐藏输入不存在信息,因此之前提交的控制信息不可用。
  • 请求头中的 http referer 与当前 URL 相同。

  • 任何人都可以提供用于确定 IsPostback bool 属性的条件的实际分割吗?

    注意:我正在寻找实际的实现而不是看法/理论,因为我希望用它来积极解决问题。我还搜索了 MSDN,但迄今为止找不到任何准确涵盖该机制的技术文章。

    提前致谢,
    布莱恩。

    最佳答案

    该页面查找 __PREVIOUSPAGE 的存在形式值(value)。

    从反射器:

    public bool IsPostBack
    {
        get
        {   //_requestValueCollection = Form or Querystring name/value pairs
            if (this._requestValueCollection == null)
            {
                return false;
            }
    
            //_isCrossPagePostBack = _requestValueCollection["__PREVIOUSPAGE"] != null
            if (this._isCrossPagePostBack)
            {
                return true;
            }
    
            //_pageFlags[8] = this._requestValueCollection["__PREVIOUSPAGE"] == null
            if (this._pageFlags[8])
            {
                return false;
            }
    
            return (   ((this.Context.ServerExecuteDepth <= 0) 
                    || (   (this.Context.Handler != null) 
                        && !(base.GetType() != this.Context.Handler.GetType())))
                    && !this._fPageLayoutChanged);
        }
    }
    

    关于asp.net - IsPostback 在技术上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5650580/

    相关文章:

    asmx - 可以将 ASMX 配置为响应 HTTP 1.1 OPTIONS 请求吗?

    asp.net - 从子页面刷新父页面

    c# - ASP.NET LinqDataSource WHERE 子句

    php - 如何将 https 源的下载传递到 http 连接?

    ajax - 如何让 PUT 和 DELETE 动词与 IIS 上的 Web API 一起使用

    asp.net-mvc - 我将如何编写一个 Action 过滤器来确保每个 Post 操作都使用防伪 token ?

    asp.net - 中央 HTML 模板可防止 ASP.NET MVC 中出现重复的演示代码

    c# - 试图在 .NET 应用程序中读取或写入 protected 内存

    spring - QHttpMultiPart 生成不同的边界

    http-headers - HTTP Request Header X-Requested-With 来自哪里