【问题标题】:ASP.Net UpdatePanel error when trying to find TargetControlID尝试查找 TargetControlID 时出现 ASP.Net UpdatePanel 错误
【发布时间】:2011-08-15 19:08:50
【问题描述】:

我有一个带有 MasterPages 的网络应用程序。在其中一个内容页面上,我尝试使用 UpdatePanel 来禁用和启用某些字段。

UpdatePanel 触发器设置为下拉列表,但是当页面加载时,我收到一条错误消息,指出无法找到下拉列表的控件 ID。我在运行时尝试了简单 ID (cboEventType) 和 HTML 标记中的完整注册 ID (ctl00_maincontentholder_wpControls_cboEventType),但在尝试了这两种方法后,我仍然收到找不到 TargetControlID 的错误。

下拉列表控件在设计时设置为可见,因此它不会在页面加载时隐藏。可能是什么问题?

【问题讨论】:

  • 下拉列表是否位于内容页面之外?
  • 不,它位于内容页面内

标签: asp.net updatepanel


【解决方案1】:

您收到此错误是因为母版页中不存在该控件;它存在于页面上。

我认为您必须执行以下操作才能使其正常工作:

ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(cboEventType);

【讨论】:

  • 母版页未更新,内容页已更新。那么如果我声明“ctl00_maincontentholder_wpControls_cboEventType”,它不应该能够找到它吗?
  • 我认为这行不通,而且使用 ClientID 可能也不是一个好主意。上面的解决方案更简洁,潜在影响也更少。
  • 这不起作用仍然收到“在 UpdatePanel 'pnlControl' 中找不到触发器的 ID 为 'cboEventType' 的控件。”
  • 您需要将 cboEventType 从触发器部分中取出。上面的解决方案将实现与 PostBackTrigger 相同的功能。
  • 使用 AJAX UpdatePanel,您需要告诉它哪个控件触发它进行更新
【解决方案2】:

您使用的是 ClientID 吗?还是身份证?我的猜测是您没有使用 ClientID。

【讨论】:

  • 在 ASP.Net 中,您可以通过在属性上选择它或在 HTML 标记“TargetControlID='cboEventType'”或“TargetControlID='ctl00_maincontentholder_wpControls_cboEventType'”中手动输入来指定哪个控件是目标/跨度>
猜你喜欢
  • 2023-02-09
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 2010-10-17
  • 2015-12-28
  • 2019-04-21
  • 2019-07-03
相关资源
最近更新 更多