代码之家  ›  专栏  ›  技术社区  ›  danwellman

通过嵌套的母版页从内容页访问body元素

  •  5
  • danwellman  · 技术社区  · 16 年前

    我只想进入 <body> 元素,并向其添加类名。

    我有一个顶级母版页 <身体& 元素。然后我有一个嵌套的母版页,它是内容页的母版页。从内容页后面的代码中,我想向body元素添加一个类名。这就是全部。

    我有一个顶级大师:

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

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

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

    我得到一个信息:

    system.web.ui.masterpage不包含“bodynode”的定义

    如果我将此添加到ASPX内容页:

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

    然后消息变为:

    BodyNode由于其保护级别而无法访问

    请建议,我已经浪费了2个小时的时间来做一些真正简单的事情:(

    2 回复  |  直到 10 年前
        1
  •  11
  •   Greg Olmstead    16 年前

    一旦为body节点设置了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() 就这点而言。

        2
  •  0
  •   Avitus    16 年前

    我将在母版页后面的代码中添加一个公共属性,该属性允许访问作为母版页一部分的body标记。然后从内容页调用该属性。

    推荐文章