Asp.Net 中 !IsPostBack 和刷新之间的区别
Difference between !IsPostBack and refresh in Asp.Net
我在!IsPostBack
块中写了一些代码。此代码在页面首次加载时执行。那也行。但问题是,当我通过点击 f5 键刷新页面时,这会再次执行,这是我不想做的。我搜索了很多文章,发现 PostBack
和刷新之间的区别。我知道这件事。但我的问题是 !IsPostBack
和 Refresh 之间的区别。我们能否编写一些仅在页面第一次加载时执行的代码,而不是在我们刷新页面时执行的代码。顺便说一句,我已经在 Page_Init()
方法中编写了 !IsPostBack
块,并且我正在使用 c# 进行代码隐藏。谢谢
Refersh 和 IsPostback 有点不相关:
- 浏览器刷新一般表示"re-run last action that resulted in this page"。通常它会导致 GET 请求,但如果页面显示为 postback 的结果,它也可能导致 POST。旁注:您经常会发现网站警告您不要在 "charge my credit card" 等不可逆操作期间刷新页面,因为它可能会触发重复 post.
- IsPostBack 只是声明请求作为 POST 到达服务器,而不是 GET。
结合您可以获得触发 if (IsPostBack)
检查任一分支的刷新。在大多数情况下,服务器将收到 GET 请求并因此执行 !IsPostBack
分支。
如果您确实需要检测页面是否已呈现一次 - 设置 cookie 或将信息写入 Session
将是合理的解决方案。
请更改您的隐藏代码,如下所示。
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
块中写了一些代码。此代码在页面首次加载时执行。那也行。但问题是,当我通过点击 f5 键刷新页面时,这会再次执行,这是我不想做的。我搜索了很多文章,发现 PostBack
和刷新之间的区别。我知道这件事。但我的问题是 !IsPostBack
和 Refresh 之间的区别。我们能否编写一些仅在页面第一次加载时执行的代码,而不是在我们刷新页面时执行的代码。顺便说一句,我已经在 Page_Init()
方法中编写了 !IsPostBack
块,并且我正在使用 c# 进行代码隐藏。谢谢
Refersh 和 IsPostback 有点不相关:
- 浏览器刷新一般表示"re-run last action that resulted in this page"。通常它会导致 GET 请求,但如果页面显示为 postback 的结果,它也可能导致 POST。旁注:您经常会发现网站警告您不要在 "charge my credit card" 等不可逆操作期间刷新页面,因为它可能会触发重复 post.
- IsPostBack 只是声明请求作为 POST 到达服务器,而不是 GET。
结合您可以获得触发 if (IsPostBack)
检查任一分支的刷新。在大多数情况下,服务器将收到 GET 请求并因此执行 !IsPostBack
分支。
如果您确实需要检测页面是否已呈现一次 - 设置 cookie 或将信息写入 Session
将是合理的解决方案。
请更改您的隐藏代码,如下所示。
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();
}
}