ASP.NET WebForms C#如果url与超链接添加类相同

时间:2011-08-04 09:18:49

标签: c# asp.net

我有几个链接如下所示:

<ul>
    <li><asp:HyperLink ID="lnk1" NavigateUrl="~/section/sub-section/page1" runat="server">My Link</asp:HyperLink></li>
    <li><asp:HyperLink ID="lnk2" NavigateUrl="~/section/sub-section/page2" runat="server">My Link</asp:HyperLink></li>
</ul>

我想要做的是在代码隐藏中添加一个选定的类,如果链接网址与当前正在查看的网页的网址匹配。

我该怎么做?感谢

4 个答案:

答案 0 :(得分:1)

将您的超链接放在面板中

<asp:Panel id="pnl" runat="server">
<ul>
    <li><asp:HyperLink ID="lnk1" NavigateUrl="~/section/sub-section/page1" runat="server">My Link</asp:HyperLink></li>
    <li><asp:HyperLink ID="lnk2" NavigateUrl="~/section/sub-section/page2" runat="server">My Link</asp:HyperLink></li>
</ul>
</asp:Panel>

然后在你的代码中迭代遍历每个HyperLink控件:

foreach (Control lnk in pnl.Controls)
        {
            if (lnk is HyperLink)
            {
                HyperLink href = (HyperLink)lnk;
                if (Request.Url.AbsoluteUri.Equals(href.NavigateUrl))                
                    href.Attributes.Add("class", "selected");                
            }
        }

希望这会有所帮助..

答案 1 :(得分:0)

在Page.Request对象中,您有获取当前页面的RawUrl的属性,在Page.Controls中执行循环,您可以找到所有超链接,然后可以将NavigateUrl属性与页面URL进行比较,你已经确定了。

请记住,如果您想要从代码后面更改服务器控件的属性,最好只使用Page_PreRender方法,因为如果您在更改之前可以覆盖它...

答案 2 :(得分:0)

您可以在母版页上获取当前文件名

string currentpage = Request.FilePath;

答案 3 :(得分:0)

这将是(你需要调整equality比较):

if (Request.Url.AbsoluteUri == lnk1.NavigateUrl) { lnk1.Attributes.Add("class", "selected"); }