IsPostBack总是返回false

Kam*_*yar 3 asp.net postback session-state asp.net-4.0 ispostback

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

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

这让我疯了!

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

Kyl*_*man 11

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

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

由于您手动刷新页面,IsPostBack因此始终为false.

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

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

如果您想跟踪用户之前是否曾访问某个页面,则您需要跟踪自己的情况.您可以在Session中设置变量来执行此操作:

Session["UserHasVisitedThisPageBefore"] = true;
Run Code Online (Sandbox Code Playgroud)

然后你可以检查它代替你当前的IsPostBack支票:

if(Session["UserHasVisitedThisPageBefore"] != null && (bool)Session["UserHasVisitedThisPageBefore"])
{
    // stuff here
}
Run Code Online (Sandbox Code Playgroud)


key*_*rdP 5

刷新页面时,IsPostBack应该为false.当控件引起回发时,例如服务器端按钮,它就变为了.

编辑 - 要回答您的更新:您可以使用它IsPostBack来确定是否要更新数据库.如果为false,请不要更新数据库,否则请更新它.

 if(IsPostBack)
 {
   //Update DB
 }
Run Code Online (Sandbox Code Playgroud)