【问题标题】:postback not raised problem回发未提出问题
【发布时间】:2009-07-01 18:51:59
【问题描述】:

我有下一个情况:

  • 我在初始化期间加载了动态控件,并进行了正确的初始化。
  • 我在回发之前添加了动态控制
  • 我稍后不会在加载时添加任何内容
  • 控件已正确加载和显示
  • 我按回发,没有任何反应

为什么我真的不知道.. 我什么都试过了。所以控制是正确初始化的。 __EVENTTARGET 显示与触发它的链接按钮的 UniqueId 相同的路径。树中的所有控件都具有 viewstate=true。所以,我真的不知道这不起作用。

有什么想法吗?我很绝望..我不知道..如果有人可以建议我,如果没有解决方案,那么我应该检查的东西会非常好。

【问题讨论】:

  • 在页面生命周期中的什么时候添加动态控件? (“我在回发之前添加动态控制”不太清楚。)
  • 回发期间是否重新添加动态加载的控件?你能展示你的代码的某些部分吗?
  • 动态控制很难做到正确。参考本系列文章:weblogs.asp.net/infinitiesloop/archive/2006/10/16/…2800_Part-3_2900.aspx
  • 这是在页面初始化时加载的 private void LoadControl(PlaceHolder holder, string path, string ID) { UserControl ctrl = (UserControl)Page.LoadControl(path); ctrl.ID = ID;最后控制路径 = 路径; ctrl.EnableViewState = true;持有人.Controls.Clear(); holder.Controls.Add(ctrl); } 这工作..所以我从会话中获取这些数据。
  • 现在没有了。我不知道..你看到id,一切。在我有类似的代码之前它工作正常。

标签: asp.net events dynamic user-controls postback


【解决方案1】:

此问题仅针对此页面,还是您在同一站点上的其他页面也存在相同问题?

我假设您在所有页面上都有相同的问题。

这可能与不允许使用 javascript 有关。您可以尝试将站点添加到本地 Intranet 安全区,然后刷新页面。

【讨论】:

  • 不,我有 javascript。回发确实发生了。表单已提交。
  • 只是为了确保:当您按下按钮时,您看到表单已提交? (例如 IIS 日志中的条目)
【解决方案2】:

必须在每次回发时将动态控件添加回控件树才能触发事件。

【讨论】:

    【解决方案3】:

    动态创建的控件不是其容器视图状态的一部分,因此将其设置为 TRUE 不会对这种情况产生任何影响,并且在 on_init 调用完成之前不会对其进行评估。

    我将使用回发if(!IsPostBack) { //Insert logic here }的条件检查来包装填充这些动态控件的逻辑

    如果您的动态控件从用户那里获取输入,或者需要访问他们的视图状态,那么您需要将此调用移至 Page_Load 方法,因为这是页面生命周期中首先评估视图状态的点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2012-04-17
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多