【问题标题】:How to access site master page controls from code behind in ASP?如何从 ASP 中的代码访问站点母版页控件?
【发布时间】:2019-06-12 05:18:36
【问题描述】:

我在我的网站母版页中设置了导航栏,我试图从每个引用它的页面后面的代码中访问它,以更改页面加载事件中的“活动”选定项目。我已将每个 li 标签设置为唯一的 id 并设置为 runat="server" 但我仍然无法引用它。这是我到目前为止在母版页上的内容。

<nav class="navbar navbar-inverse">
    <div class="container-fluid">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
        </div>
        <div class="collapse navbar-collapse" id="myNavbar2" >
            <ul class="nav navbar-nav">
                <li class="active" id="nbHome" runat="server"><a href="HomePage.aspx">Home</a></li>
                <li><a href="Gallery.aspx" id="nbGallery" runat="server">Gallery</a></li>
                <li><a href="Services.aspx" id="nbServices" runat="server">Services</a></li>
                <li><a href="Tutorials.aspx" id="nbTutorials" runat="server">Tutorials</a></li>
                <li><a href="FAQ.aspx" id="nbFAQ" runat="server">F.A.Q.</a></li>
                <li><a href="Contact.aspx" id="nbContact" runat="server">Contact</a></li>
            </ul>
        </div>
    </div>
</nav>

【问题讨论】:

标签: c# asp.net


【解决方案1】:

您使用FindControl 在Master 中查找HtmlControl

HtmlControl control = Master.FindControl("nbGallery") as HtmlControl;
control.Attributes.Add("class", "active");

这需要 .cs 文件顶部的 using System.Web.UI.HtmlControls;

【讨论】:

  • 没有变化,遗憾的是 - 所选项目保持非活动状态。不过要摆弄一下。对旧的选定项使用类似的代码来执行 control.Attributes.Remove("class");虽然工作正常
  • 当这个sn-p在页面中用于搜索Master中的控件时,它适用于我的测试环境。如果在master后面的代码中使用,那么需要去掉Master.
  • 成功找到,可以从预选的类中删除。我试图从引用母版页的 aspx 页面之一的 PageLoad 中引用它(成功地),它只是不会更改类本身。
  • 你所说的“更改类”是什么意思,你检查过 html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多