【问题标题】:Find a UnorderedList <UL> control inside a master page from a content page in asp.net从 asp.net 的内容页面中的母版页中查找 UnorderedList <UL> 控件
【发布时间】:2009-11-19 22:13:55
【问题描述】:

大家好,

我想找到一个 UL 控件,然后在该 UL 中找到一个 LI,并从内容页面为其分配一个 css 类......

<ul id="mainMenu" runat="server" style="width:350px;">
            <li id="mainHome" runat="server"><a title="Home" href="#" class="home">Home</a></li>
            <li id="mainManage" runat="server"><a title="Manage" href="#" class="manage">Manage</a></li>
            <li id="mainEnquiry" runat="server"><a title="Enquiry" href="#" class="enquiry">Enquiry</a></li>
            <li id="mainReport" runat="server"><a title="Report" href="#" class="report">Reports</a></li>

            </ul>

如果用户点击主页,它会被重定向到 users.aspx 页面,我想用颜色突出显示主页 LI...请给我建议...

【问题讨论】:

    标签: asp.net controls master-pages find


    【解决方案1】:

    如果我理解正确的话......

    如果您的列表在母版页上...

    <ul runat="server" id="list">
        <li runat="server" id="home">Home</li>
        <li runat="server" id="news">News</li>
    </ul>
    

    ...那么您可以在内容页面上执行此操作...

    Control list = this.Page.Master.FindControl("list");
    

    然后 li 对象将成为列表对象中的控件 - 例如list.Controls。或者你可以这样做......

    Control home = this.Page.Master.FindControl("list").FindControl("home");
    

    ...查找列表控件的具体控件。

    在 HTML 控件上使用 runat="server" 时,服务器端等效对象将为 HtmlGenericControl。

    如果你想为 LI 标签应用一个类,你需要做的是将 LI 对象转换为 HtmlGenericControl 和然后使用 Attributes 属性。比如……

    HtmlGenericControl home = (HtmlGenericControl)this.Page.Master.FindControl("list").FindControl("home");
    
    home.Attributes["class"] = "className";
    

    希望对您有所帮助...

    【讨论】:

    • 我找到了 UL id,但我找不到家中的 LI id
    • 要找到 LI,您必须这样做。Page.Master.FindControl("list").FindControl("home");
    • chalkey 成功了,但我无法将 css 应用到那个 LI ... 如何应用 css
    • @Pandiya - 我再次更新了我的示例!按照我的示例,您将能够在后面的代码中添加一个 CSS 类。
    【解决方案2】:

    试一试,让我知道它是否有效。

    在 CSS 中,创建两个类,如下所示:

    .normalLink
    {
    background-color:#fff;
    }
    
    .selectedLink
    {
    background-color:#555;
    }
    

    在您的链接中:

    <li id="mainHome" runat="server"><a title="Home" href="users.aspx" class="<%= SetSelectedLink("users.aspx") %>">Home</a>
    <li id="mainManage" runat="server"><a title="Manage" href="#" class="<%= SetSelectedLink("manage.aspx") %>">Manage</a></li>
    

    在您的后台代码中:

    如果您使用的是母版页,请在后面的主代码中执行此操作,否则您可以将其粘贴到需要它的每个常规 aspx 代码中

    public string SetSelectedLink(string linkURL)
    {
     if(Request.Url.ToLower().Contains(linkURL.ToLower())))
     {
        return "selectedLink";
     }
     else
     {
       return "normalLink";
     }
    }
    

    编辑: 这仅在您将 href # 替换为正确的 url 时才有效!

    【讨论】:

    • 海阿德里亚诺斯我想使用 css
  • 您想在
  • 元素而不是 元素上调用 SetSelectedLink?然后将其移动到
  • 元素
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签