ASP.NET C#带列表导航如何设置id=";“当前”;在活动导航页面上?
我还在学习asp.net,想知道是否有一种简单的方法可以将id=“current”设置为导航栏,以便根据用户所在的页面突出显示该页面。我的模板被设置为使用id=“current”来更改链接的样式,我有I类来设置每个选项卡的样式 这是我的站点中的代码ASP.NET C#带列表导航如何设置id=";“当前”;在活动导航页面上?,c#,asp.net,C#,Asp.net,我还在学习asp.net,想知道是否有一种简单的方法可以将id=“current”设置为导航栏,以便根据用户所在的页面突出显示该页面。我的模板被设置为使用id=“current”来更改链接的样式,我有I类来设置每个选项卡的样式 这是我的站点中的代码 <nav id="navigation" class="style-1"> <div class="left-corner"></div> <div class="right-corner"><
<nav id="navigation" class="style-1">
<div class="left-corner"></div>
<div class="right-corner"></div>
<ul class="menu" id="responsive">
<li><a href="home.aspx" id="current"><i class="home"></i> Home</a></li>
<li><a href="Calendar.aspx"><i class="calendar"></i>Calendar</a></li>
<li><a href="Bill.aspx"><i class="list"></i>Bills</a></li>
</ul>
</nav>
正如我所说,我还在学习,所以我不确定是否最好将它放在ContentPlaceHolder中。我试图请求URL并执行if语句,但不确定如何设置id=
任何帮助都会很好
谢谢在控件中以编程方式设置ID不是一个很好的实践。。。这取决于您想要如何确定“当前”或活动状态 如果您使用的是ASP.NET表单,则可以研究使用“ASP.NET控件”菜单,该菜单为“活动”项分配一个类,并且可以与ASP.NET站点地图配对/数据绑定 如果不希望使用ASP.NET表单,可以在href标记中放置函数求值,并在ASP.NET母版页的代码中声明函数。差不多
<a href="home.aspx" class="<% CurrentOrNot("home") %>"> ...
在开始自己的操作之前,请先查看ASP.NET菜单。这可能不是最好的答案,但我最近尝试了与您尝试的类似的操作。首先,我设置一个变量来表示每个菜单链接的css类,然后获取当前文件路径并检查它是否包含位置,然后根据页面是否为活动页面设置css类
@{
//some how find out what page we are on so we can set the active attribute
var HomeClass = "non-active";
var AboutClass = "non-active";
string path = HttpContext.Current.Request.FilePath;
if (path.Contains("Home"))
{
HomeClass = "active";
}
if (path.Contains("About"))
{
AboutClass = "active";
}
}
然后对于菜单,我为类属性做了这些
<a href="/home" class="@HomeClass"></a>
< a href="/about" class=@AbouitClass"> </a>
您应该考虑设置菜单项的类,而不是id
,以便将其显示为高亮显示
你可以这样做。
向每个链接添加id
和runat=“server”
:
<li><a href="home.aspx" id="HomeLink" runat="server"><i class="home"></i> Home</a></li>
<li><a href="Calendar.aspx" id="CalendarLink" runat="server"><i class="calendar"></i>Calendar</a></li>
<li><a href="Bill.aspx" id="BillLink" runat="server"><i class="list"></i>Bills</a></li>
这会将与当前页面相匹配的链接类设置为current
。当然,您需要在样式表中定义该类。但这应该会起作用。这是我最初的想法。让我来玩一下,让您知道它是如何运行的。感谢您的建议。这是我最后使用的,效果很好。谢谢这救了我,谢谢!
<li><a href="home.aspx" id="HomeLink" runat="server"><i class="home"></i> Home</a></li>
<li><a href="Calendar.aspx" id="CalendarLink" runat="server"><i class="calendar"></i>Calendar</a></li>
<li><a href="Bill.aspx" id="BillLink" runat="server"><i class="list"></i>Bills</a></li>
protected void Page_Load(object sender, EventArgs e)
{
SetCurrentPage();
}
private void SetCurrentPage()
{
var pageName = GetPageName();
switch (pageName)
{
case "home.aspx":
HomeLink.Attributes["class"] = "current";
break;
case "Calendar.aspx":
CalendarLink.Attributes["class"] = "current";
break;
case "Bill.aspx":
BillLink.Attributes["class"] = "current";
break;
}
}
private string GetPageName()
{
return Request.Url.ToString().Split('/').Last();
}