C# 使用css和c以编程方式更改母版页中的链接#

C# 使用css和c以编程方式更改母版页中的链接#,c#,asp.net,css,master-pages,C#,Asp.net,Css,Master Pages,有人知道如何通过编程更改子页面母版页中链接的ccs吗 例如,我在母版页中有一个(导航)链接列表,如下所示: <div class="list-group"> <a href="report.aspx" class="list-group-item active">Donuts&trade;</a> <a href="english_responses.aspx" class="list-group-item

有人知道如何通过编程更改子页面母版页中链接的ccs吗

例如,我在母版页中有一个(导航)链接列表,如下所示:

    <div class="list-group">
        <a href="report.aspx" class="list-group-item active">Donuts&trade;</a>
        <a href="english_responses.aspx" class="list-group-item">English responses</a>
        <a href="irish_responses.aspx" class="list-group-item">Irish responses</a>
    </div>

在导航列表中,我使用css class:list-group-item-active来显示活动链接(活动时为蓝色),普通链接使用css class:list-group-item

我想要的是使用c#以编程方式更改每个子页面的活动链接

有没有办法通过页面加载来实现这一点?

您几乎没有选择:

  • runat=“server
    添加到锚定标记
  • 改用
    HyperLink
    控件
ASP:

<asp:HyperLink ID ="ReportHyperLink" 
               NavigateUrl ="report.aspx" 
               CssClass="list-group-item" runat="server" />
ReportHyperLink.CssClass= "list-group-item active";
<asp:ContentPlaceHolder ID="cpHolder" runat="server">              
<asp:HyperLink ID ="ReportHyperLink" 
               NavigateUrl ="report.aspx" 
               CssClass="list-group-item" runat="server" />
</asp:ContentPlaceHolder>
ContentPlaceHolder cp = (ContentPlaceHolder)this.Master.FindControl("CpHolder");
HyperLink hp= (HyperLink)cp.FindControl("ReportHyperLink");
hp.CssClass= "list-group-item active";
public string ReportHyperLinkCssClass
{
    get {
        return this.ReportHyperLink.CssClass;
    }
    set {
        this.ReportHyperLink.CssClass= value;
    }
}

如果在母版页“子”页中使用,似乎无法使代码正常工作

你只需要找到控件

ASP:

<asp:HyperLink ID ="ReportHyperLink" 
               NavigateUrl ="report.aspx" 
               CssClass="list-group-item" runat="server" />
ReportHyperLink.CssClass= "list-group-item active";
<asp:ContentPlaceHolder ID="cpHolder" runat="server">              
<asp:HyperLink ID ="ReportHyperLink" 
               NavigateUrl ="report.aspx" 
               CssClass="list-group-item" runat="server" />
</asp:ContentPlaceHolder>
ContentPlaceHolder cp = (ContentPlaceHolder)this.Master.FindControl("CpHolder");
HyperLink hp= (HyperLink)cp.FindControl("ReportHyperLink");
hp.CssClass= "list-group-item active";
public string ReportHyperLinkCssClass
{
    get {
        return this.ReportHyperLink.CssClass;
    }
    set {
        this.ReportHyperLink.CssClass= value;
    }
}

另一种更好的方法是,您可以在母版页中添加公共属性,如下所示:

硕士代码隐藏:

<asp:HyperLink ID ="ReportHyperLink" 
               NavigateUrl ="report.aspx" 
               CssClass="list-group-item" runat="server" />
ReportHyperLink.CssClass= "list-group-item active";
<asp:ContentPlaceHolder ID="cpHolder" runat="server">              
<asp:HyperLink ID ="ReportHyperLink" 
               NavigateUrl ="report.aspx" 
               CssClass="list-group-item" runat="server" />
</asp:ContentPlaceHolder>
ContentPlaceHolder cp = (ContentPlaceHolder)this.Master.FindControl("CpHolder");
HyperLink hp= (HyperLink)cp.FindControl("ReportHyperLink");
hp.CssClass= "list-group-item active";
public string ReportHyperLinkCssClass
{
    get {
        return this.ReportHyperLink.CssClass;
    }
    set {
        this.ReportHyperLink.CssClass= value;
    }
}
页面加载代码

var myMaster = this.Master as YourMasterType;
if(myMaster != null)
{
    myMaster.ReportHyperLinkCssClass = newCssClass;
}

也可以使用JQuery来代替页面加载事件

请参见下面的jquery代码示例:

$(document).ready(function() {
    var childerns = $('.list-group').children('a');

    for (var i = 0; i < childerns.length; i++) {
        if ($(childerns[i]).attr('href') == 'english_responses.aspx') {
            $(childerns[i]).attr('class', 'list-group-item active');
        }
    }
});
$(文档).ready(函数(){
var childerns=$('.list group').childrens('a');
对于(变量i=0;i

在上面的代码中,我正在将具有href=“english_responses.aspx”的锚定标记的css从列表组项目更改为列表组项目活动“

对于这样简单的事情,使用纯javascript或jquery将比使用服务器端c好得多,也快得多,但如果你绝对必须像meda所说的那样,在锚定标记中添加一个“runat='server'”(最好使用超链接控件),允许您从服务器访问控件,并将样式属性更改为首选项


但我绝对建议使用javascript。

这是使用jquery以高性能完成同样事情的另一种方法。这很酷,我没想到这一点。但是如果在母版页“儿童”页中使用,似乎无法将代码隐藏起来,非常感谢