【问题标题】:Difference between !IsPostBack and refresh in Asp.NetAsp.Net 中 !IsPostBack 和 refresh 之间的区别
【发布时间】:2015-03-05 00:47:15
【问题描述】:

我在!IsPostBack 块中编写了一些代码。此代码在页面第一次加载时被执行。没事儿。但问题是,当我通过点击 f5 键刷新页面时,这会再次执行,我不想这样做。我搜索了很多文章,发现PostBack和refresh之间的区别。我知道这件事。但我的问题是!IsPostBack 和刷新之间的区别。我们能否编写一些仅在页面第一次加载而不是刷新页面时执行的代码。顺便说一句,我在Page_Init() 方法中编写了我的!IsPostBack 块,并且我正在使用c# 进行代码隐藏。谢谢。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    Refersh 和 IsPostback 有点无关:

    • 在浏览器中刷新通常意味着“重新运行导致该页面的上一个操作”。通常它会导致 GET 请求,但如果页面显示为回发的结果,它也会导致 POST。旁注:您经常会发现网站警告您在“向我的信用卡收费”等不可逆操作期间不要刷新页面,因为这可能会触发重复发布。
    • IsPostBack 只是声明请求以 POST 方式到达服务器,而不是 GET。

    结合你可以获得触发if (IsPostBack)检查的任一分支的刷新。在大多数情况下,服务器会收到 GET 请求并因此执行!IsPostBack 分支。

    如果您确实需要检测页面是否已经呈现过一次 - 设置 cookie 或将信息写入 Session 将是合理的解决方案。

    【讨论】:

      【解决方案2】:

      请按照下面给出的代码更改您的代码。

              Boolean IsPageRefresh;
              protected void Page_Load(object sender, EventArgs e)
              {
                  if (!IsPostBack)
                  {
                      ViewState["postids"] = System.Guid.NewGuid().ToString();
                      Session["postid"] = ViewState["postids"].ToString();
                  }
                  else
                  {
                      if (ViewState["postids"].ToString() != Session["postid"].ToString())
                      {
                          IsPageRefresh = true;
                      }
                      Session["postid"] = System.Guid.NewGuid().ToString();
                      ViewState["postids"] = Session["postid"].ToString();
                  }
              }
      

      【讨论】:

      • 如果您在首次加载后刷新,ispostback 将始终为 false!所以永远不要进来,直到从页面返回一个帖子
      • @Aristos 代码不适用于 Javascript。它适用于 C#
      • @MAK 一点也不。它将出现在 else 部分。
      • @Aristos 对不起。我没有得到
      • @NCA 别着急,算了,我把消息删了
      猜你喜欢
      • 2018-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 2012-10-27
      相关资源
      最近更新 更多