【问题标题】:Save some values before button PostBack在按钮 PostBack 之前保存一些值
【发布时间】:2016-04-10 00:47:20
【问题描述】:

好吧,我在 .cs 文件中动态创建了一些文本框,当我在详细信息视图的编辑模式下单击更新按钮时,我想保存/存储它们的值,因此我将按钮的 onclick 事件设置为函数这样做。

问题是回发事件发生在“OnClick”事件之前,然后文本框的值丢失。

如何先保存/存储它们的值?

请帮帮我。

提前致谢!

【问题讨论】:

  • 您的意思是,回发(在客户端)发生在“OnClick”发生(在服务器上)之前,听起来不错。

标签: c# asp.net postback


【解决方案1】:

您可以使用 Page.IsPostBack 属性检测页面的首次加载或回发(OnClick、SelectedItemIndexChanged like..)。 您应该在 Page_Laoad 事件处理程序中检查此属性值。

【讨论】:

  • 嗨 user565002,是的,但是在那一刻我的值丢失了,我无法再访问它们,这就是为什么我想在 Page_Load 执行之前存储它们
  • 好的,如果你的控件是动态创建的,你应该将值保存在 ViewState 对象codeproject.com/Articles/502251/…
  • 感谢 user565002,我会深入研究那篇文章。看起来很有趣。谢谢!
【解决方案2】:

有助于了解 ASP.NET 页面生命周期。(有关详细信息,请参阅 here。) 基本事件如下:

  • 预初始化
  • 初始化
  • 预加载
  • 加载(这里的控件用回发值填充)
  • 控制事件(OnClick 发生在这里)
  • 预渲染
  • 渲染
  • 卸载

通常在“Init”事件期间,您要创建所有控件,包括用户的任何动态控件。

在加载事件期间,asp.net 将所有发布日期从客户端复制到页面中的控件。但是为了让这个在回发中起作用,在初始渲染中创建的相同控件必须以相同的顺序存在,并且具有相同的 ID。

然后在 PreRender 中您可以更改页面状态,包括为下一篇文章添加和删除控件。

所以要澄清一下我会如何想象您的页面流程:

  • OnInit - 构建您的控件并填充初始值。
  • OnLoad - 在回发期间,您的控件将填充用户更新的值。
  • OnClick - 使用用户按钮单击事件来保存更新的值。

【讨论】:

  • 感谢您的回答约翰,所以想象一下我按下一个按钮,页面事件按照您在列表中所说的顺序开始。我应该在 INI 事件中调用创建动态控件的函数吗?如果是这样,在哪种情况下我可以获得动态控件的“按钮点击前”值?
  • 为按钮控件的 Click 事件添加监听器。然后就可以查看当时所有控件的值了。
  • 您的意思是“OnClick”吗?如果我没记错的话,这会在 PostBack 之后执行
  • 是的 OnClick。所以你应该有用户输入的值。我已经更新了我的答案,以阐明与此问题相关的页面流程部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 2014-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多