如何从代码隐藏中在更新面板中找到客户端元素

How to find a client side element in an update panel from code behind?

本文关键字:元素 客户端 代码 隐藏 更新      更新时间:2023-09-26

在asp.net中开发用户控件时,我发现查找位于更新面板中的html客户端元素。

.ascx侧包含以下内容:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
   <ContentTemplate>
      <div id="<%=ClientID%>_MyElement">
      </div>
   </ContentTemplate>
</asp:UpdatePanel>

我需要在我的代码隐藏中获得对该div的引用。

protected void Page_Load(object sender, EventArgs e)
{
    if(IsPostBack)
    {
        //var c = UpdatePanel1.FindControl("<%=ClientID%>_MyElement"); //<-not working.
        //:
        //get some values from c
        //:
    }
}

现在,由于还有Ajax(JavaScript)在操作div:

  1. 我无法为该div设置runat="server"
  2. 我必须使用<%=ClientID%>_MyElement作为id’ing约定

因此,假设div将保持原样——有什么方法可以获取引用吗从后面的代码到它?

试试这个:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
   <ContentTemplate>
      <div id="MyElement" runat="server">
      </div>
   </ContentTemplate>
</asp:UpdatePanel>

在后面的代码中

protected void Page_Load(object sender, EventArgs e)
{
    if(IsPostBack)
    {
        var c = MyElement;
    }
}

在javascript 中

var MyElement=document.getElementById('<%= MyElement.ClientID');

尝试从UpdatePanel访问div。示例:var div = UpdatePanel1.Controls[0];