首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C# -如何更改超文本标记语言元素属性

C# -如何更改超文本标记语言元素属性
EN

Stack Overflow用户
提问于 2008-10-09 11:56:37
回答 11查看 84.5K关注 0票数 18

我的母版页包含一个列表,如下所示。我想要做的是将"class=active“属性添加到列表li中,该属性当前处于活动状态,但我不知道如何做到这一点。我知道代码放在aspx页面的page_load事件中,但不知道如何访问我需要添加属性的li。请给我开导一下。非常感谢。

<div id="menu">
  <ul id="nav">
    <li class="forcePadding"><img src="css/site-style-images/menu_corner_right.jpg" /></li>               
    <li id="screenshots"><a href="screenshots.aspx" title="Screenshots">Screenshots</a></li>
    <li id="future"><a href="future.aspx" title="Future">Future</a></li>
    <li id="news"><a href="news.aspx" title="News">News</a></li>
    <li id="download"><a href="download.aspx" title="Download">Download</a></li>
    <li id="home"><a href="index.aspx" title="Home">Home</a></li>
    <li class="forcePadding"><img src="css/site-style-images/menu_corner_left.jpg" /></li>
  </ul>
</div>
EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2008-10-09 12:26:22

为了从服务器端访问这些控件,您需要使它们成为“runat=”。

<ul id="nav" runat="server">
  <li class="forcePadding"><img src="css/site-style-images/menu_corner_right.jpg" /></li>               
  <li id="screenshots"><a href="screenshots.aspx" title="Screenshots">Screenshots</a></li>
  <li id="future"><a href="future.aspx" title="Future">Future</a></li>
  <li id="news"><a href="news.aspx" title="News">News</a></li>
  <li id="download"><a href="download.aspx" title="Download">Download</a></li>
  <li id="home"><a href="index.aspx" title="Home">Home</a></li>
  <li class="forcePadding"><img src="css/site-style-images/menu_corner_left.jpg" /></li>
</ul>

在代码隐藏中:

foreach(Control ctrl in nav.controls)
{
   if(!ctrl is HtmlAnchor)
   {
      string url = ((HtmlAnchor)ctrl).Href;
      if(url == GetCurrentPage())  // <-- you'd need to write that
         ctrl.Parent.Attributes.Add("class", "active");
   }
}
票数 28
EN

Stack Overflow用户

发布于 2008-10-09 12:25:11

下面的代码可用于在控件层次结构中的任何位置查找命名控件:

public static Control FindControlRecursive(Control rootControl, string id)
{
    if (rootControl != null)
    {
        if (rootControl.ID == id)
        {
            return rootControl;
        }

        for (int i = 0; i < rootControl.Controls.Count; i++)
        {
            Control child;

            if ((child = FindControlRecursive(rootControl.Controls[i], id)) != null)
            {
                return child;
            }
        }
    }

    return null;
}

所以你可以这样做:

Control foundControl= FindControlRecursive(Page.Master, "theIdOfTheControlYouWantToFind");
((HtmlControl)foundControl).Attributes.Add("class", "active");

忘记了前面提到,在您希望能够以这种方式找到的任何控件上都需要runat="server“=)

票数 4
EN

Stack Overflow用户

发布于 2009-01-21 23:35:42

在母版页中的li标记上添加服务器“runat=”,然后将其添加到适当的page_load事件中,以便将“active”类添加到母版页中的li中。

HtmlGenericControl li = HtmlGenericControl)Page.Master.FindControl("screenshots");li.Attributes.Add(“HtmlGenericControl”,"active");

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/186918

复制
相关文章

相似问题

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