asp.net - IsPostBack 总是返回 false

标签 asp.net postback session-state asp.net-4.0 ispostback

我遇到了一个奇怪的问题。每次刷新页面,IsPostBack是假的。
为了确保我的内容或母版页中没有任何内容导致这种情况,我创建了一个空的 Web 表单并在 Debug模式下启动它。仍然,在回发时,我有 IsPostBack设置为假。

我有 enableSessionState="true"<sessionState timeout="30" />在 web.config 中。

快把我逼疯了!

更新:我按 F5 刷新页面。根据答案,这不应导致回发。我想知道用户何时刷新页面(甚至手动)并防止对 db 进行一些修改)。
有解决方案吗?

最佳答案

刷新页面(按 F5 或浏览器中的刷新按钮)不是回发。单击按钮、更改下拉列表或页面上的某些其他事件导致数据发送到服务器(通过 HTTP POST,因此称为“回发”)时会发生回发

您的问题并不清楚您是手动刷新页面还是通过单击按钮或其他事件发回服务器。

由于您是手动刷新页面,IsPostBack永远是假的。

ASP.NET 中有两种类型的请求(在某种意义上):

  • 常规请求(例如用户第一次加载页面)
  • 回发(例如点击页面上的按钮,将数据发送到服务器)

  • 如果您想在任何一种情况下跟踪用户之前是否访问过某个页面,您都需要自己跟踪。您可以在 Session 中设置一个变量来执行此操作:
    Session["UserHasVisitedThisPageBefore"] = true;
    

    然后你可以检查它代替你当前的IsPostBack查看:
    if(Session["UserHasVisitedThisPageBefore"] != null && (bool)Session["UserHasVisitedThisPageBefore"])
    {
        // stuff here
    }
    

    关于asp.net - IsPostBack 总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6614097/

    相关文章:

    jquery - 回发后丢失 jQuery 功能

    django - 登录后保留 Django session 数据吗?

    javascript - 刷新页面,不重新发送 POST 数据(ASP.NET)

    c# - 手动实例化的 SessionState 提供程序的问题

    .net - 为什么 ASP.NET 中有两种不兼容的 session 状态类型?

    asp.net - 使用文件来记录用户对 ASP.Net 4 站点的访问是一个好主意吗?如果不是为什么不呢?

    c# - 将 JavaScript 确认提示添加到 ASP.NET GridView 中的删除命令按钮?

    c# - 如何在 asp.net 图像控件上绘制几何形状以创建图像映射?

    c# - 在 asp.net 网站的更新面板内自动将文件上传到服务器

    c# - 服务器控件事件未正确触发