Asp.net IsPostBack总是返回false

Asp.net IsPostBack总是返回false,asp.net,postback,session-state,asp.net-4.0,ispostback,Asp.net,Postback,Session State,Asp.net 4.0,Ispostback,我遇到了一个奇怪的问题。每次我刷新页面时,IsPostBack为false。 为了确保我的内容或母版页中没有任何内容导致这种情况,我创建了一个空的web表单,并在调试模式下启动它。不过,在回发中,我将IsPostBack设置为false 我在web.config中有enableSessionState=“true”和 它快把我逼疯了 更新:我点击F5刷新页面。根据答案,这不应导致回发。我想知道用户何时刷新页面(即使是手动刷新),并防止对数据库进行某些修改)。 有解决方法吗?刷新页面时,IsPos

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

我在web.config中有
enableSessionState=“true”

它快把我逼疯了

更新:我点击F5刷新页面。根据答案,这不应导致回发。我想知道用户何时刷新页面(即使是手动刷新),并防止对数据库进行某些修改)。

有解决方法吗?

刷新页面时,
IsPostBack
应为false。当控件导致回发(如服务器端按钮)时,此选项变为真

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

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

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

由于您正在手动刷新页面,
IsPostBack
将始终为false

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

  • 常规请求(例如,用户第一次加载页面)
  • 回发(例如,点击页面上的按钮,向服务器发送数据)
如果您想跟踪某个用户以前是否访问过某个页面,那么您需要自己跟踪该页面。您可以在会话中设置一个变量来执行此操作:

Session["UserHasVisitedThisPageBefore"] = true;
然后,您可以将其替换为当前的
IsPostBack
检查:

if(Session["UserHasVisitedThisPageBefore"] != null && (bool)Session["UserHasVisitedThisPageBefore"])
{
    // stuff here
}

每次刷新页面时,基本上都会对页面执行GET请求。获取意味着,在不更改服务器状态的情况下加载页面
IsPostBack
=false是绝对正确的行为


回发将发生在页面上,如果您向其发送。然后提交服务器端表单或触发带有
autoPostBack
的web控件-这将导致回发
IsPostBack
将为真。

听起来您需要一些其他机制来检测页面是否被刷新,比如计数器。Viewstate、Session、hidden字段-有很多选项。

我遇到了一个问题,在一个使用XSL呈现标记的特定项目中,IsPostBack总是为false。因此,我没有依赖.NET的IsPostBack属性,而是简单地检查了Request.HttpMethod

e、 如果我需要检查的话!相反,我检查了Request.HttpMethod==“GET”


e、 g.如果我需要检查IsPostBack,我会改为检查if Request.HttpMethod==“POST”

您是否有enableviewstate?设置当您说
刷新页面时,您是指手动还是实际通过单击服务器端控件(如按钮)?是,我已将
enableViewstate
设置为true@Kamyar-按F5不会导致回发,因此代码没有问题。(检查答案)听起来您需要一些其他机制来检测页面是否被刷新,比如计数器。Viewstate、Session、hidden field-有很多选项。谢谢您的回答。但我的问题是,当用户刷新页面时,ispostback始终为false。Kyle的回答建议我应该使用会话变量+谢谢你的回答。但使用会话状态变量并不是一个好的选择,因为每当用户离开页面时,我都必须删除它,否则,如果用户转到其他页面并返回,它仍然是错误的。我认为使用隐藏字段是处理此问题的最佳选择。