gpt4 book ai didi

c# - 在 Page_load 之前单击 Button_click

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:07 25 4
gpt4 key购买 nike

我在一个包含用户控件的简单页面中使用通用列表。

我使用 Session 变量填充此列表。此 session 变量在我的 Button_click 事件中设置。

当用户单击按钮时,会设置 session 变量并发生回发。问题是 Page_load 在 Button_clicked 事件之前被调用...我们知道这是标准页面的生命周期。

最后,我的通用列表没有更新,因为 session 变量是在 page_load 之后设置的。

编辑:我的 session 变量是在一个函数中设置的,该函数由委托(delegate)点击我的用户控件的按钮处理。

是否有解决方案来防止这种情况发生?是否有一种解决方案可以使用 session 变量在多次回发中保持此列表的值?

谢谢你的帮助,

昆汀

最佳答案

在点击事件中,你应该做三件事:

  1. 将通用列表保存到 Session。
  2. 保存一个类似标志的 cookie(可以是 session 值),表示列表已保存。
  3. Resonse.Redirect(Request.RawURL) 重定向到同一页面。

在 Page_Load 事件中你应该做这样的事情:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["MyFlag"] != null)
{
//Perform whatever you need to do with your already saved generic list in Session
Session["MyFlag"] = null;
}
}
}

如果你需要跨回发存储一个复杂的对象,比如一个通用列表,Session 是你的 friend 。如果您只需要存储一个值,您可以使用 cookie 或 ASP.HiddenField,但为此您最好使用 Session。

关于c# - 在 Page_load 之前单击 Button_click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11331393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com