怎么用编程的方式访问Content 控件?

xpnew 2009-04-29 05:19:02
在asp.net中,通过编程访问Page上的普通控件也好,访问Master上面的普通控件和ContentPlaceHolder控件都行。

但是如何在内容页上访问Content控件呢?

模仿Label控件那样,真接使用ID访问失败!

用FindControl查找失败!

下面的结果,只有第三个是False!

Response.Write(Page.FindControl("Content1") == null);
Response.Write(Page.FindControl("ContentPlaceHolder1") == null);
Response.Write(Master.FindControl("ContentPlaceHolder1") == null);

怎么办呢?请高手指教!
...全文
147 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xpnew 2010-08-06
  • 打赏
  • 举报
回复
好长时间了,大家的回答都正确,分不太多,每人分点吧。
gdjlc 2009-12-11
  • 打赏
  • 举报
回复
参考:http://blog.csdn.net/gdjlc/archive/2009/10/27/4733198.aspx

我写的例子:分别设置母版页和内容页控件的值

MasterPage.master
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btn11" runat="server" Text="Button" /> <br />
<asp:Button ID="btn12" runat="server" Text="Button" /><br />
<asp:Button ID="btn13" runat="server" Text="Button" /><br />
<asp:Button ID="btn14" runat="server" Text="Button" /><br />
<asp:Button ID="btn15" runat="server" Text="Button" /><br />
<asp:Button ID="btn16" runat="server" Text="Button" /><br />
<asp:Button ID="btn17" runat="server" Text="Button" /><br />

<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
</div>
</form>
</body>
</html>

test8.aspx
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="test8.aspx.cs" Inherits="test8" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

<asp:Button ID="btn1" runat="server" Text="Button" /> <br />
<asp:Button ID="btn2" runat="server" Text="Button" /><br />
<asp:Button ID="btn3" runat="server" Text="Button" /><br />
<asp:Button ID="btn4" runat="server" Text="Button" /><br />
<asp:Button ID="btn5" runat="server" Text="Button" /><br />
<asp:Button ID="btn6" runat="server" Text="Button" /><br />
<asp:Button ID="btn7" runat="server" Text="Button" /><br />

<asp:Button ID="Button9" runat="server" OnClick="Button9_Click" Text="test" />
</asp:Content>


test8.aspx.cs

protected void Button9_Click(object sender, EventArgs e)
{
//内容页
ContentPlaceHolder c = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
object[] btn = new object[7];
for (int i = 1; i < 8; i++)
{
btn[i - 1] = (Button)c.FindControl("btn" + i.ToString());
((Button)btn[i - 1]).Text = "修改" + i.ToString();
}

//母版页
object[] btn2 = new object[7];
for (int j = 1; j < 8; j++)
{
btn2[j-1] = (Button)Page.Master.FindControl("btn" + (j+10).ToString());

((Button)btn2[j-1]).Text = "修改" + (j+10).ToString();
}

}
zhubo_1117 2009-12-11
  • 打赏
  • 举报
回复
& this.Master.FindControl("ContentPlaceHolder1").findControl("gridview")等等就这样。
lspcieee 2009-12-11
  • 打赏
  • 举报
回复
Content
已经不属于自己了,而是母板页了。。
要这么访问:
Master.FindControl("Content对应的ContentPlaceHolderID")

原本搜索到这里来的,自己后来分析分析,找到原因,贴上答案,帮助后来人!
www.shanrui.net
lspcieee 2009-12-11
  • 打赏
  • 举报
回复
Content
已经不属于自己了,而是母板页了。。
要这么访问:
Master.FindControl("Content对应的ContentPlaceHolderID")

www.shanrui.net
xpnew 2009-04-30
  • 打赏
  • 举报
回复
补充一下,我访问Content控件的目的是希望在代码隐藏文件(xxx.cs)中创建控件,然后再添加到Content中去。

例如,下面这段代码:

HtmlMeta Meta1 = new HtmlMeta();
Meta1.Content = "网站关键字!";
Meta1.Name = "keywords";
//Content1.Controls.Add(Meta1);
最后一行,因为无法访问Content控件所以只好注销了。

coodd 2009-04-29
  • 打赏
  • 举报
回复
不识庐山真面目,只缘身在此山中。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧