[英]ASP.NET WebForms C# if url is same as hyperlink add class
我有幾個看起來像以下的鏈接:
<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>
我想要做的是在代碼后面,如果鏈接URL與當前正在查看的頁面的URL相匹配,則添加一類selected。
我該怎么做? 謝謝
這樣將超鏈接放置在面板中
<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");
}
}
希望這會有所幫助..
在Page.Request對象中,您確實具有獲取當前頁面的RawUrl的屬性,在Page.Control中進行循環,可以找到所有超級鏈接,然后可以將NavigateUrl屬性與頁面url進行比較,並進行設置。
請記住,如果要從后面的代碼更改服務器控件的屬性,最好只在Page_PreRender
方法中執行此Page_PreRender
因為如果在更改之前被覆蓋,則...
您可以在“母版”頁面上獲取當前文件名
string currentpage = Request.FilePath;
這將是類似的(您需要對equality
進行比較):
if (Request.Url.AbsoluteUri == lnk1.NavigateUrl) { lnk1.Attributes.Add("class", "selected"); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.