各位好,小弟向大家请教个问题,是这样的:
我在我的网站中建了个主模板Default.Master,然后我在我的网站中的某一页中如Index.aspx中调用了主模板,然后在
<content></content>中放了几个Label控件,然后在后台调用了下面语句:foreach (Control ctrl in this.Page.Controls)
{
string kk="";
foreach (Control ctl in ctrl.Controls)
{
if (ctl.GetType().Name == "Label")
{
Label la=new Label();
la=(Label)this.FindControl(ctl.ClientID);
kk += la.ClientID;
}
}
}
主要目的是想把这几天Label控件的名称连接起来放到字符串kk中,但我发现kk老是等于空,好像在页面中找不到Label控件,但如果我在页面中不调用主模板,把几个Label控件放到一个空页面时,上面语句就能实现,但一调用主模板就出了问题,到底是怎么回事呢?请知道的帮忙告诉一声.
我在我的网站中建了个主模板Default.Master,然后我在我的网站中的某一页中如Index.aspx中调用了主模板,然后在
<content></content>中放了几个Label控件,然后在后台调用了下面语句:foreach (Control ctrl in this.Page.Controls)
{
string kk="";
foreach (Control ctl in ctrl.Controls)
{
if (ctl.GetType().Name == "Label")
{
Label la=new Label();
la=(Label)this.FindControl(ctl.ClientID);
kk += la.ClientID;
}
}
}
主要目的是想把这几天Label控件的名称连接起来放到字符串kk中,但我发现kk老是等于空,好像在页面中找不到Label控件,但如果我在页面中不调用主模板,把几个Label控件放到一个空页面时,上面语句就能实现,但一调用主模板就出了问题,到底是怎么回事呢?请知道的帮忙告诉一声.
解决方案 »
- 大侠们,问一个最常见到又困扰了许久的问题
- [下跪求助]关于动态生成出来的按钮调用,为什么我这里只有最后一个按钮生效呢?
- 如何保持上传的控件的值
- 为什么我下载的IEWebControls.exe安装后没有Microsoft.Web.UI.WebControls.dll
- 我的ASP.NET显示是乱码了,怎么办?
- 求救:怎样按照文件夹中文件更改日期的顺序来取出文件??
- 中文文件无法下载的文题。
- .net环境下Debug WEB程序,IIS经常会莫名其妙地死掉,重起IIS也没有反应
- 在用MVC模式做教务系统的时候出现问题
- MVC
- 关于过滤字符过滤问题!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 能否建立一个与全局变量类似的数据库的数据源连接?
我的这一句应该没有问题啊,我如果不用主模板时,我试过了,完全没有问题,但一用好像就找不到控件,不知道是什么问题
if (ctl.GetType().Name == "Label")
{
Label la=new Label();
la=(Label)this.FindControl(ctl.ClientID);
kk += la.ClientID; }
if (ctl.GetType().Name == "Label")
{
Label la=new Label();
la=(Label)this.FindControl(ctl.ClientID);
kk += la.ClientID; }
变量ctl从哪里来的呢?
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<div id="div" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Label4" runat="server" Text="Label"></asp:Label>
</div>
</asp:Content>運行后發現這部分内容變爲<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" class="tbbg01">
<tr >
<td valign="top">
<div id="ctl00_ContentPlaceHolder1_div">
<span id="ctl00_ContentPlaceHolder1_Label1">Label</span>
<span id="ctl00_ContentPlaceHolder1_Label2">Label</span>
<span id="ctl00_ContentPlaceHolder1_Label3">Label</span>
<span id="ctl00_ContentPlaceHolder1_Label4">Label</span>
</div> </td>
</tr>
</table>
{
string kk = "";
foreach (Control ctl in ctrl.Controls)
{
if (ctl.ID == "ContentPlaceHolder1")
{
foreach (Control c in ctl.Controls)
{
if (c.GetType().Name == "Label")
{
Label la = new Label();
la = (Label)c;
kk = la.ClientID;
Response.Write(kk+"\n");
}
}
}
}
}
這樣就可以了
ctl00_ContentPlaceHolder1_Label1 ctl00_ContentPlaceHolder1_Label2 ctl00_ContentPlaceHolder1_Label3 ctl00_ContentPlaceHolder1_Label4
if (ctl.GetType().Name == "Label")
{
Label la=new Label();
la=(Label)this.FindControl(ctl.ClientID);
kk += la.ClientID; } 变量ctl从哪里来的呢?
----------------------------------------------------------
if (ctrl.GetType().Name == "Label")
{
Label la=new Label();
la=(Label)this.FindControl(ctl.ClientID);
kk += la.ClientID; }
ctrl
能编程输出生成HTML么?
nj_1st_excellence 这位兄弟的思路是先用this.master引用到master页面,寻找该控件,然后再回返到继承页面中根据该控件找内嵌控件,学习了。
--------------------------------------------------------------------------------------------------------------
最后十分感激楼主提了这么好的一个问题和nj_1st_excellence的正确回答。谢谢。