wub*_*gly 3 css c# asp.net master-pages
有人知道如何以编程方式更改子页面母版页中链接的ccs吗?
例如,我的主页中有一个(导航)链接列表,如下所示:
<div class="list-group">
<a href="report.aspx" class="list-group-item active">Donuts™</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>
Run Code Online (Sandbox Code Playgroud)
在导航列表中,我使用css类:list-group-item active来显示活动链接(活动时为蓝色)和css class:list-group-item用于普通链接.
我想要的是使用c#以编程方式更改每个子页面的活动链接.
有没有办法用page_load做到这一点?
你有几个选择:
runat="server到锚标记HyperLink控件ASP:
<asp:HyperLink ID ="ReportHyperLink"
NavigateUrl ="report.aspx"
CssClass="list-group-item" runat="server" />
Run Code Online (Sandbox Code Playgroud)
代码背后:
ReportHyperLink.CssClass= "list-group-item active";
Run Code Online (Sandbox Code Playgroud)
如果在主页"子"页面中使用,似乎无法使代码生效
你只需要找到控件
ASP:
<asp:ContentPlaceHolder ID="cpHolder" runat="server">
<asp:HyperLink ID ="ReportHyperLink"
NavigateUrl ="report.aspx"
CssClass="list-group-item" runat="server" />
</asp:ContentPlaceHolder>
Run Code Online (Sandbox Code Playgroud)
代码背后:
ContentPlaceHolder cp = (ContentPlaceHolder)this.Master.FindControl("CpHolder");
HyperLink hp= (HyperLink)cp.FindControl("ReportHyperLink");
hp.CssClass= "list-group-item active";
Run Code Online (Sandbox Code Playgroud)
也是一种更好的方法,您可以在母版页中添加公共属性,如下所示:
主人的代码背后:
public string ReportHyperLinkCssClass
{
get {
return this.ReportHyperLink.CssClass;
}
set {
this.ReportHyperLink.CssClass= value;
}
}
Run Code Online (Sandbox Code Playgroud)
页面加载代码
var myMaster = this.Master as YourMasterType;
if(myMaster != null)
{
myMaster.ReportHyperLinkCssClass = newCssClass;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3068 次 |
| 最近记录: |