我正在尝试指向一个名为myMenu的用户控件中的锚点的ID。用户控件位于母版页上。因此,我正在尝试从一个内容页面添加一个"active“类,以便它将突出显示该特定页面的链接。现在我有:
if (Master != null)
{
var sitenav = (UserControl)Master.FindControl(id: "myMenu");
if (sitenav != null)
{
var navlink = sitenav.Parent;
}
}我仍然在试图弄清楚这里的逻辑,但找不到任何包含这些信息的东西。我知道我会把htmlanchor当做那种类型?
用户控件中的html:
<li><a runat="server" ID="linka" href="#">Link A</a></li>
<li><a runat="server" ID="linkb" href="#">Link B</a></li>
<li><a runat="server" ID="linkc" href="#">Link C</a></li>
<li><a runat="server" ID="linkd" href="#">Link D</a></li>发布于 2016-06-08 03:39:02
MasterPage.cs:
... class MasterClass ...
public void performAction(bool toggle){
if (toggle){
myId.class += "active"; //something like that
}
}ContentPage.cs
(MasterClass)performAction(true);这就是访问母版页函数并使其在母版页元素上执行某些操作的方式。
要从后台代码添加一个css类,我建议您参考这个答案,它既优雅又完整。Caspar Kleijne's answer
因此,您的complete解决方案将为:
在页面中,您可以将母版页强制转换为特定类型(公开所需功能的您自己的母版页的类型),并使用as来处理类型不匹配的任何异常:
内容页:
var master = Master as MyMasterPage;
if (master != null)
{
master.AddClass("active");
}在上面的代码中,如果Master不是MyMasterPage类型,那么master将为null,并且不会尝试任何方法调用;否则将按预期调用。
MasterPage
public void AddClass(string classname ){
// add a class
myMenu.CssClass = String.Join(" ", myMenu
.CssClass
.Split(' ')
.Except(new string[]{"",classname})
.Concat(new string[]{classname})
.ToArray()
);
}https://stackoverflow.com/questions/37687649
复制相似问题