首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改用户控件id中的css

更改用户控件id中的css
EN

Stack Overflow用户
提问于 2016-06-08 03:22:08
回答 1查看 76关注 0票数 0

我正在尝试指向一个名为myMenu的用户控件中的锚点的ID。用户控件位于母版页上。因此,我正在尝试从一个内容页面添加一个"active“类,以便它将突出显示该特定页面的链接。现在我有:

代码语言:javascript
复制
if (Master != null)
        {
            var sitenav = (UserControl)Master.FindControl(id: "myMenu");
            if (sitenav != null)
            {
                var navlink = sitenav.Parent;

            }
        }

我仍然在试图弄清楚这里的逻辑,但找不到任何包含这些信息的东西。我知道我会把htmlanchor当做那种类型?

用户控件中的html:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2016-06-08 03:39:02

MasterPage.cs:

代码语言:javascript
复制
... class MasterClass ...

public void performAction(bool toggle){
  if (toggle){
    myId.class += "active"; //something like that
  }
}

ContentPage.cs

代码语言:javascript
复制
(MasterClass)performAction(true);

这就是访问母版页函数并使其在母版页元素上执行某些操作的方式。

要从后台代码添加一个css类,我建议您参考这个答案,它既优雅又完整。Caspar Kleijne's answer

因此,您的complete解决方案将为:

在页面中,您可以将母版页强制转换为特定类型(公开所需功能的您自己的母版页的类型),并使用as来处理类型不匹配的任何异常:

内容页:

代码语言:javascript
复制
var master = Master as MyMasterPage;
if (master != null)
{
    master.AddClass("active");
}

在上面的代码中,如果Master不是MyMasterPage类型,那么master将为null,并且不会尝试任何方法调用;否则将按预期调用。

MasterPage

代码语言:javascript
复制
public void AddClass(string classname ){
// add a class
myMenu.CssClass = String.Join(" ", myMenu
           .CssClass
           .Split(' ')
           .Except(new string[]{"",classname})
           .Concat(new string[]{classname})
           .ToArray()
   );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37687649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档