我有几个链接如下所示:
<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>
我想要做的是在代码隐藏中添加一个选定的类,如果链接网址与当前正在查看的网页的网址匹配。
我该怎么做?感谢
答案 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_PreRender
方法,因为如果您在更改之前可以覆盖它...
答案 2 :(得分:0)
您可以在母版页上获取当前文件名
string currentpage = Request.FilePath;
答案 3 :(得分:0)
这将是(你需要调整equality
比较):
if (Request.Url.AbsoluteUri == lnk1.NavigateUrl) { lnk1.Attributes.Add("class", "selected"); }