加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 通过嵌套母版页从内容页面访问body元素

发布时间:2020-12-16 03:36:32 所属栏目:asp.Net 来源:网络整理
导读:我想做的就是访问 body来自内容页面代码隐藏的元素,并为其添加类名. 我有一个顶级母版页,其中包含 body元素在里面.然后我有一个嵌套的母版页,它是内容页面的母版页.从内容页面后面的代码我想要一个类名称添加到body元素.就这样. 我在顶级大师中有这个: body
我想做的就是访问< body>来自内容页面代码隐藏的元素,并为其添加类名.

我有一个顶级母版页,其中包含< body>元素在里面.然后我有一个嵌套的母版页,它是内容页面的母版页.从内容页面后面的代码我想要一个类名称添加到body元素.就这样.

我在顶级大师中有这个:

<body id="bodyNode" runat="server">

我将此添加到内容页面的代码隐藏中:

Master.bodyNode.Attributes.add("class","home-page");

我收到一条消息:

System.Web.UI.MasterPage’ does not contain a definition for ‘bodyNode

如果我将其添加到aspx内容页面:

<% @ MasterType VirtualPath="~/MasterPage.master"%>

该消息然后更改为:

bodyNode is inaccessible due to its protection level

请注意,我已经浪费了2个小时的感觉,这应该是非常简单的事情:(

解决方法

一旦为身体节点设置了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");   
}

编辑
您的问题是您有嵌套的母版页.

由于“body”标记位于顶级母版页中,因此Master.FindControl()将不起作用,因为它在嵌套母版页中查找.

你需要做的是使用Master.Master.FindControl(),或者递归遍历你的母版页,直到Master.Master为空(当时你知道你在顶级母版页),然后调用FindControl(那个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读