gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:34:32 27 4
gpt4 key购买 nike

我目前遇到一个奇怪的问题,即当我单击简单回发到同一页面的 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/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com