所以我注意到,自动生成的[Code here]中的任何html都可以从master创建的表单中更改。
我有一个用ul做的标题,每个元素都是li。 我希望所选页面的li在选定页面上变为li class-“active”。
由于master的所有其他形式都是从它继承属性,因此在[Code here]中放置一个标题会使我在创建新表单时不存在。
我的问题是:有没有办法让li成为li class-“active”而不必覆盖标题的所有代码,方法是将其放入并复制并粘贴我的标题代码但只更改一个李。
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
<div class="bodyGradient">
<header class="navbar navbar-inverse navbar-static-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-left">
<li>
<a href="/Home.aspx">{Someone's Domain}</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="/Home.aspx">Home</a>
</li>
<li>
<a href="/">About</a>
</li>
<li>
<a href="/">Portfolio</a>
</li>
<li>
<a href="/">CryptoGame</a>
</li>
<li>
<a href="/">Photos</a>
</li>
<li>
<a href="/">Contact</a>
</li>
</ul>
</div>
</div>
</header>
</div>
</asp:ContentPlaceHolder>
</div>
</form>
答案 0 :(得分:0)
您似乎希望根据用户访问的页面突出显示活动菜单项,其中您的菜单存储在MasterPage中,并在多个页面中使用。
有很多方法可以解决这个问题,有很多例子可供我们查看。看看周围,这里只是几个:
How to set css class on active menu item using a masterpage?
active menu item - asp.net mvc3 master page
How to highlight active page in a masterpage menu?
ASP.NET MVC: Masterpage: How to set css class on active menu item
这是我上次遇到这个时所做的(伪ish):
(在ASP.NET母版页中:)
<li class="<%=GetActiveForButton('Home')>">Home</li>
<li class="<%=GetActiveForButton('About')>">About</li>
(在Code Behind .cs中)
public string GetActiveForButton(string button)
{
string url = HttpContext.Current.Request.Url.AbsoluteUri.ToLower();
if (url.Contains("home.aspx") && button == "Home")
{
return "active-button";
}
else if (url.Contains("about.aspx") && button == "About")
{
return "active-button";
}
return "";
}
注意:这只是一个例子。这段代码可以精心清理,结合逻辑,使用枚举等等。它是伪代码......但你应该能够理解。