如何从代码后面的更新面板中找到客户端元素?

时间:2013-09-02 12:06:42

标签: c# javascript html asp.net ajax

在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. 我必须使用&lt;%= ClientID%&gt; _MyElement作为id'ing约定。
  3. 所以假设div将保持不变 - 有没有办法获取引用 从后面的代码到它?

2 个答案:

答案 0 :(得分:2)

试试这个:

<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');

答案 1 :(得分:1)

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