【问题标题】:Getting a dynamic controls value after Page_Load in C#?在 C# 中的 Page_Load 之后获取动态控件值?
【发布时间】:2009-10-22 14:17:04
【问题描述】:

我有两个可以通信的 Web 部件。至少在提供者的 Page_Load 事件之前,提供者不能给消费者一个值(一个 RID)。所以消费者直到 Page_Load 之后才能知道它需要的 RID。所以,我迷上了 Page_LoadComplete。现在有一个问题。消费者基于此 RID 创建动态控件。

现在。这些动态创建的控件是在 Page_Load 之后创建的。因此,它们的视图状态没有恢复(但在 Page_Load 中创建的动态控件确实恢复了它们的值)。

所以,基本上我需要的是一种方法来手动将视图状态恢复到控件,或者从 POST 变量或 C# 中的等效变量中获取控件的值..

另外,如果我可以在 Page_Init 获得控件的值,那也可以。

【问题讨论】:

    标签: c# asp.net events controls postback


    【解决方案1】:

    从 Request.Form 键/值对中的帖子返回的所有信息。如果您在那里检查并在键中搜索控件 ID,则无需查看视图状态即可获取该值。

    您可能需要查看每个键并搜索包含控件名称的键,因为键将是客户端 ID,而不是您指定的 ID。

    【讨论】:

    • 其实我才刚刚开始查找。您可以通过使用类似 string value=Request.Form.GetValues(ddlMyControl.UniqueID)[0];以 [0] 结尾,因为它返回一个 1 元素字符串数组..
    【解决方案2】:

    如果控件是动态的,在回发发生之前它们不会处于 ViewState 中。所以 ViewState 在初始加载时不可用,除非您自己将它们添加到 ViewState。

    ViewState.Add("myRID", RID)
    

    或者您可以将它保存在 SessionState 中,并且不要重载 ViewState,因为 ViewState 往往会变得太大。我会选择 SessionState。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多