簡體   English   中英

ASP.NET WebForms C#(如果URL與超鏈接添加類相同)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM