asp.net - 在 asp.net 的回发之间保持 Page.Init 中可访问的值

标签 asp.net postback viewstate dynamic-controls

好的,我已经了解到,为了在 ASP.NET 中保留动态(创建的)控件及其 View 状态,我们必须在页面 init 事件中(重新)创建它们,因此它们已经存在于页面的控件层次结构中在加载 View 状态之前。

正如本文所述article .

如果创建这些控件的条件位于 Web 环境(例如数据库)之外,则实现此行为没有问题。但是,如果我用来决定必须创建多少个动态控件的值实际上是控件中的值,我该怎么办?

我尝试用一​​个例子来解释一下,也许更清楚:

假设我们有一个文本框和两个按钮。在文本框中,我写下要创建的动态控件的数量,例如 4 个复选框。当我点击按钮1时,应该创建控件。没问题。然后我选中一些复选框并点击按钮2以触发回发。现在我应该在页面初始化事件中重新创建控件,就像我们之前所说的那样,以维护控件及其状态。

问题来了。因为我处于初始化阶段,所以我没有 View 状态,所以我无法访问文本框中的值,该值告诉我应该创建多少个动态复选框.

我认为将值存储在 session 对象中可以解决问题,但事实并非如此。 session 对象也无法访问。

我可以在哪里保存可以从 init 事件访问的值?

感谢并抱歉发了这么长的帖子!

最佳答案

第一件事 - 文本框值不会从 View 状态存储/检索,您无法从 View 状态获取文本框值。 说到实际问题,这里是(imp)事件 init -> 加载 View 状态 -> 绑定(bind)回发数据 -> 页面加载的顺序。您只能在绑定(bind)回发数据事件(实际上获取发布的数据并绑定(bind)到文本框控件)之后检索文本框值。 在 init 中唯一的选项是使用 Request.Form{"textboxoxy"] 来获取文本框值。

关于asp.net - 在 asp.net 的回发之间保持 Page.Init 中可访问的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15639403/

相关文章:

c# - ASP.Net - WebForms - 单击链接时如何避免多个 Page_Load 事件

c# - 如何阻止 asp.net 在表单回发时重新附加查询字符串?

asp.net - 完全删除特定页面的 ViewState

ASP.NET MVC-有没有一种方法可以模拟ViewState?

c# - ASP.NET 母版页中的 PreRender 未触发

c# - ext.net 2.0 - 获取树节点的自定义属性

c# - 是否可以在显示一些进展时禁用鼠标事件

c# - 需要将字符串/字符转换为 ascii 值

c# - 为什么文本框中的自动完成 jquery 在内容占位符中使用时不起作用?

javascript - asp net webforms禁用提交按钮