【问题标题】:Can't access label in user control on Master page from Javascript无法从 Javascript 访问母版页上的用户控件中的标签
【发布时间】:2018-02-28 20:14:00
【问题描述】:

在从 Javascript 部分回发后,我正在尝试更新母版页上用户控件中的标签。我遇到的问题实际上是访问控件。

母版页上的用户控件如下所示:

<uc:Header runat="server" ID="Header1" ClientIDMode="Static" />

用户控件的 HTML 如下所示:

<asp:Panel ID="pnlHeader" runat="server" CssClass="page-head">
<h2>
    <asp:Label ID="lblTitle" runat="server" Text="Title"></asp:Label></h2>

在我的 Javascript 中,我使用以下方法捕获部分回发:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(updateHeader);

function updateHeader() {

    alert(document.getElementById('<%=(Master.FindControl("Header1")).ClientID %>'));

}

Header1 返回 null。非常感谢任何帮助!

【问题讨论】:

  • 什么时候加载 ,这是一个剃刀服务器端请求,它只能在服务器端渲染期间填充,
  • 这是网络表单而不是 MVC。页面加载时加载母版页。问题是我需要更改部分回发的标签。
  • Header1 是一个用户控件,它没有被渲染;内容是渲染。这就是为什么 Header1 为空,即未找到。看看源代码html。 JavaScript 看不到它。您可以给 lblTitle 一个 cssclass 的标题,然后通过 javascript 处理它: document.getElementsByClassName("title")[0].innerHTML);

标签: javascript asp.net webforms


【解决方案1】:

您需要再次使用 FindControl 来定位用户控件内的标签。

<%= Master.FindControl("Header1").FindControl("lblTitle").ClientID %>

【讨论】:

    猜你喜欢
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多