当前位置:编程学习 > C#/ASP.NET >>

为什么在后台代码中Controls遍历不到前台HyperLink控件

前台代码

<form id="form1" runat="server">
    <div>
    <% 
        if(1==2){     %>
        <asp:HyperLink ID="HyperLink1" runat="server">HyperLink1</asp:HyperLink>
        <%} %>
        <asp:HyperLink ID="HyperLink2" runat="server">HyperLink2</asp:HyperLink>
    </div>    
    </form>

后台

 protected void Page_Load(object sender, EventArgs e)
    {
      
        for (int i = 0; i < this.Controls.Count; i++)
        {
            Control con = this.Controls[i];

            string conid = con.ID;//遍历不到id HyperLink1 和 HyperLink2
        }
        Control con = this.FindControl("HyperLink2");//成功找到
    }
--------------------编程问答-------------------- this.Controls[i]下边的Controls不找吗?一层循环可以?? --------------------编程问答--------------------
 foreach (Control ct in this.form1.Controls)//循环查询表单里面的子控件
            {
                if (ct.GetType().ToString().Equals("System.Web.UI.WebControls.HyperLink"))
                {
                    ....
                }
            }
--------------------编程问答--------------------
foreach(Control c in form1.Controls)
{
    if(c is HyperLink)
    {
        HyperLink link=c as HyperLink;
        Response.Write(link.InnerText+"<br/>");
    }
}
--------------------编程问答-------------------- if(1==2)因为你这个条件不成功,.net是先编译.aspx文件再去编译 Page_Load文件

你可以尝试在page_oninit事件中去找 --------------------编程问答-------------------- if(1==2)因为你这个条件不成功,.net是先编译.aspx文件再去编译 Page_Load文件

你可以尝试在page_oninit事件中去找
--------------------
是么 不是吧,是先执行后台再执行前台的,当然在执行后台之前,已经能找到控件了,最关键原因是form1.Controls这才正确 --------------------编程问答--------------------  
Page_Load(

是页面已经加载完的意思,你要以定义一个全局变量,然后在Page_Load中附值,去page中显示,应该是显示不了Page_Load中附给的值 --------------------编程问答--------------------
引用 3 楼 dalmeeme 的回复:
C# code

foreach(Control c in form1.Controls)
{
    if(c is HyperLink)
    {
        HyperLink link=c as HyperLink;
        Response.Write(link.InnerText+"<br/>");
    }
}

+1 --------------------编程问答--------------------
引用 3 楼 dalmeeme 的回复:
C# code
foreach(Control c in form1.Controls)
{
    if(c is HyperLink)
    {
        HyperLink link=c as HyperLink;
        Response.Write(link.InnerText+"<br/>");
    }
}


+1 --------------------编程问答--------------------
引用 8 楼 seanding1989 的回复:
引用 3 楼 dalmeeme 的回复:
C# code
foreach(Control c in form1.Controls)
{
if(c is HyperLink)
{
HyperLink link=c as HyperLink;
Response.Write(link.InnerText+"<br/>");
}
}
+1
+1
--------------------编程问答-------------------- 参考视频:
http://www.cnblogs.com/insus/articles/2033414.html --------------------编程问答--------------------

如果是为了解决问题,这样不就行了。如果是探讨,可以深究
 protected void Page_Load(object sender, EventArgs e)
    {
        Control con = this.FindControl("HyperLink1");//成功找到
        Control con = this.FindControl("HyperLink2");//成功找到
    }
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,