1

在 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 将保持原样 - 有没有办法从后面的代码中获取对它的引用?

4

2 回答 2

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');
于 2013-09-02T12:16:29.113 回答
1

尝试div从您的UpdatePanel. 例子:var div = UpdatePanel1.Controls[0];

于 2015-08-10T21:07:57.697 回答