我想要做的就是<body>从内容页面的代码隐藏中访问元素并为其添加类名.
我有一个包含<body>元素的顶级母版页.然后我有一个嵌套的母版页,它是内容页面的母版页.从内容页面后面的代码我想要一个类名称添加到body元素.就这样.
我在顶级大师中有这个:
<body id="bodyNode" runat="server">
Run Code Online (Sandbox Code Playgroud)
我将此添加到内容页面的代码隐藏中:
Master.bodyNode.Attributes.add("class", "home-page");
Run Code Online (Sandbox Code Playgroud)
我收到一条消息:
System.Web.UI.MasterPage'不包含'bodyNode的定义
如果我将其添加到aspx内容页面:
<% @ MasterType VirtualPath="~/MasterPage.master"%>
Run Code Online (Sandbox Code Playgroud)
该消息然后更改为:
由于其保护级别,bodyNode无法访问
请注意,我已经浪费了2个小时的感觉,这应该是非常简单的事情:(
Gre*_*ead 11
一旦为身体节点设置了runat ="server",就必须使用HTMLControls命名空间来访问它.试试这个.
public void Page_Load(Object sender, EventArgs e)
{ 
//Inject onload and unload
HtmlGenericControl body = (HtmlGenericControl)Master.FindControl("bodyNode");
body.Attributes.Add("class", "home-page");   
}
Run Code Online (Sandbox Code Playgroud)
编辑
 
你的问题是你有嵌套的母版页.
由于"body"标记位于顶级母版页中,Master.FindControl()因此无法使用,因为它在嵌套母版页中查找.
你需要做的是使用Master.Master.FindControl()或递归遍历你的母版页,直到Master.Master为空(因为你知道你在顶级母版页),然后调用FindControl()它.