无法在代码后面找到Web控件?

时间:2014-07-24 08:11:47

标签: c# asp.net click web-controls linkbutton

我在页面上有一些控件,我无法访问代码背后的控件,它来自科学情报。我找到了原因。

这是我的网页控制HTML代码:

   <%@ Control Language="c#" AutoEventWireup="false" Inherits="DNNInfo.Modules.Classifieds.Controls.CompanyClassifiedList" %>
   <div id="divDetailsDownloadFile" runat="server" class="DNNInfo_ClassifiedDownloads" visible="false">
      <asp:LinkButton ID="linkDownloadFile" Text="Download File" runat="server" />
    </div>

我在这里谈论链接按钮。

这是代码背后的代码:

namespace DNNInfo.Modules.Classifieds.Controls
{
   public class CompanyClassifiedList : PortalModuleBase
    { override protected void OnInit(EventArgs e)
    {
        InitializeComponent();
        base.OnInit(e);
    }

    private void InitializeComponent()
    {

        try
        {
            this.Load += new System.EventHandler(this.Page_Load);
           LinkButton linkDownload_File = (LinkButton)this.FindControl("linkDownloadFile");

            if (linkDownload_File != null)
            {
                linkDownload_File.Click += new EventHandler(this.linkDownloadFile_Click);
            }

        }
        catch (Exception ex)
        {

        }
    }
  }
}

它总是在“linkDownload_File”中返回null。我无法识别错误。这种行为的原因是什么。

任何帮助将不胜感激。

更新:我已经通过制作div检查了..但仍然返回null

2 个答案:

答案 0 :(得分:1)

你需要递归地查找它,因为它在DIV中。另一种方法是以这种方式使用Page.FindControl:

http://blog.codinghorror.com/recursive-pagefindcontrol/

但也许更推荐的方式:

Better way to find control in ASP.NET

或尝试删除runat =&#34; server&#34;在DIV上

答案 1 :(得分:0)

你是否尝试过以下方法: -

LinkBut​​ton linkDownload_File =(LinkBut​​ton)divDetailsDownloadFile.FindControl(&#34; linkDownloadFile&#34;);