C# 突出显示母版页中的活动菜单项
我正在使用主菜单项。由于我使用的是母版页,我不知道如何突出显示活动菜单项。有人能帮我吗。因为我有4个页面,所以我在4个页面的所有页面加载事件中尝试了下面的代码,但没有成功C# 突出显示母版页中的活动菜单项,c#,javascript,jquery,asp.net,C#,Javascript,Jquery,Asp.net,我正在使用主菜单项。由于我使用的是母版页,我不知道如何突出显示活动菜单项。有人能帮我吗。因为我有4个页面,所以我在4个页面的所有页面加载事件中尝试了下面的代码,但没有成功 if (!IsPostBack) { Menu M = (Menu)this.Master.FindControl("menu"); foreach (MenuItem item in M.Items) {
if (!IsPostBack)
{
Menu M = (Menu)this.Master.FindControl("menu");
foreach (MenuItem item in M.Items)
{
if (item.Text == "update")
{
item.Selected = true;
}
}
}
<div id="menu">
<ul>
<li>
<asp:LinkButton ID="update" runat="server" OnClick="update_Click">Update</asp:LinkButton></li>
<li>
<asp:LinkButton ID="bulk" runat="server" OnClick="bulkupdate_Click">Bulk</asp:LinkButton></li>
<li>
<asp:LinkButton ID="profiles" runat="server" OnClick="userprofiles_Click">Profiles</asp:LinkButton></li>
<li>
<asp:LinkButton ID="help" runat="server" OnClick="help_Click">Help</asp:LinkButton></li>
</ul>
</div>
#menu ul {
margin: 0;
padding: 7px 6px 0;
background: #b6b6b6 url('/Images/Overlay.png') repeat-x 0 -110px;
line-height: 100%;
border-radius: 1em;
font: normal 0.5333333333333333em Arial, Helvetica, sans-serif;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
width 100%;
}
#menu li {
margin: 0 5px;
padding: 0 0 8px;
float: left;
position: relative;
list-style: none;
}
#menu a,
#menu a:link {
font-weight: bold;
font-size: 16px;
color: #444444;
text-decoration: none;
display: block;
padding: 8px 20px;
margin: 0;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3);
}
#menu a:hover {
background: #000;
color: #fff;
}
#menu .active a,
#menu li:hover > a {
background: #bdbdbd url('/Images/Overlay.png') repeat-x 0 -40px;
background: #666666 url('/Images/Overlay.png') repeat-x 0 -40px;
color: #444;
border-top: solid 1px #f8f8f8;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
text-shadow: 0 1px 0 #ffffff;
}
#menu ul ul li:hover a,
#menu li:hover li a {
background: none;
border: none;
color: #666;
-webkit-box-shadow: none;
-moz-box-shadow: none;
}
#menu ul ul a:hover {
background: #7d7d7d url('/Images/Overlay.png') repeat-x 0 -100px !important;
color: #fff !important;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
}
#menu li:hover > ul {
display: block;
}
#menu ul ul {
display: none;
margin: 0;
padding: 0;
width: 185px;
position: absolute;
top: 40px;
left: 0;
background: url('/Images/Overlay.png') repeat-x 0 0;
border: solid 1px #b4b4b4;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}
#menu ul ul li {
float: none;
margin: 0;
padding: 3px;
}
#menu ul ul a,
#menu ul ul a:link {
font-weight: normal;
font-size: 12px;
}
#menu ul:after {
content: '.';
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}
* html #menu ul {
height: 1%;
}
if(!IsPostBack)
{
Menu M=(Menu)this.Master.FindControl(“Menu”);
foreach(M.Items中的MenuItem项)
{
如果(item.Text==“更新”)
{
item.Selected=true;
}
}
}
-
更新
-
散装
-
轮廓
-
帮助
#菜单ul{
保证金:0;
填充:7px 6px 0;
背景:#b6b6b6url('/Images/Overlay.png')repeat-x0-110px;
线高:100%;
边界半径:1米;
字体:普通0.53333em Arial,Helvetica,无衬线;
-webkit边界半径:5px;
-moz边界半径:5px;
边界半径:5px;
-webkit盒阴影:0 1px 3px rgba(0,0,0,0.4);
-moz盒阴影:0 1px 3px rgba(0,0,0,0.4);
宽度100%;
}
#菜单里{
利润率:0.5px;
填充:0.08px;
浮动:左;
位置:相对位置;
列表样式:无;
}
#菜单a,
#菜单a:链接{
字体大小:粗体;
字体大小:16px;
颜色:#4444;
文字装饰:无;
显示:块;
填充:8px 20px;
保证金:0;
边界半径:5px;
-webkit边界半径:5px;
-moz边界半径:5px;
文本阴影:0 1px 1px rgba(0,0,0,0.3);
}
#菜单a:悬停{
背景:#000;
颜色:#fff;
}
#菜单。激活a,
#菜单li:悬停>a{
背景:#bdbd url('/Images/Overlay.png')repeat-x0-40px;
背景:#666666 url('/Images/Overlay.png')repeat-x0-40px;
颜色:#444;
边框顶部:实心1px#f8;
-webkit盒阴影:0 1px 1px rgba(0,0,0,0.2);
-moz盒阴影:0 1px 1px rgba(0,0,0,0.2);
盒影:0 1px 1px rgba(0,0,0,0.2);
文本阴影:0 1px 0#ffffff;
}
#菜单ul li:将鼠标悬停在a上,
#菜单li:悬停li a{
背景:无;
边界:无;
颜色:#666;
-webkit盒阴影:无;
-莫兹盒阴影:无;
}
#菜单:悬停{
背景:#7d7d7durl('/Images/Overlay.png')repeat-x0-100px!重要;
颜色:#fff!重要;
-webkit边界半径:5px;
-moz边界半径:5px;
边界半径:5px;
文本阴影:0 1px 1px rgba(0,0,0,0.1);
}
#菜单li:hover>ul{
显示:块;
}
#菜单{
显示:无;
保证金:0;
填充:0;
宽度:185px;
位置:绝对位置;
顶部:40px;
左:0;
背景:url('/Images/Overlay.png')repeat-x0;
边框:实心1px#b4;
-webkit边界半径:5px;
-moz边界半径:5px;
边界半径:5px;
-webkit盒阴影:0 1px 3px rgba(0,0,0,0.3);
-moz盒阴影:0 1px 3px rgba(0,0,0,0.3);
盒影:0 1px 3px rgba(0,0,0,0.3);
}
#菜单ul-li{
浮动:无;
保证金:0;
填充:3倍;
}
#菜单ula,
#菜单:链接{
字体大小:正常;
字体大小:12px;
}
#菜单ul:之后{
内容:‘’;
显示:块;
明确:两者皆有;
可见性:隐藏;
线高:0;
身高:0;
}
*html#菜单ul{
身高:1%;
}
根据您所在的页面,是否可以使用document.ready中的Jquery设置活动项?但这不是一个好的做法。。如果菜单项增加,这可能需要更改代码。将CSS用于活动菜单
像
使用asp.net菜单控件,如下所示
<asp:Menu Width="100%" ItemWrap="true" ID="SelectMenu" runat="server" DynamicHorizontalOffset="2"
StaticSubMenuIndent="10px" CssClass="menubar" Orientation="Horizontal">
<DynamicHoverStyle CssClass="menuitem-hover" />
<DynamicMenuItemStyle HorizontalPadding="2px" CssClass="menuitem" />
<DynamicMenuStyle BackColor="#F7F6F3" CssClass="IE8Fix" />
<DynamicSelectedStyle CssClass="menuitemsel" />
<StaticHoverStyle ForeColor="Yellow" />
<StaticMenuItemStyle HorizontalPadding="15px" VerticalPadding="0px" CssClass="menu" />
<StaticSelectedStyle CssClass="menuitemselstatic" />
<Items>
</items>
</asp:Menu>
@user3003821-查看此链接 脏,但能用 母版页HTML:
<div id="MenuHolderDiv">
<ul>
<li class="menuLst"><a href="#" id="MenuItem1" onclick="redirectOnClick(this)">MenuItem1</a></li>
<li class="menuLst"><a href="#" id="MenuItem2" onclick="redirectOnClick(this)">MenuItem2</a></li>
<li class="menuLst"><a href="#" id="MenuItem3" onclick="redirectOnClick(this)">MenuItem3</a></li>
<li class="menuLst"><a href="#" id="MenuItem4" onclick="redirectOnClick(this)">MenuItem4</a></li>
</ul>
</div>
</div>
条件:用于菜单项的PageName和ID必须相同使用引导和jQuery
$(function () {
$(".navbar‐btn a").each(function () {
if (this.href.trim().split("/").splice(3, 4)[0] == window.location.pathname.split("/").splice(1, 1)[0])
$(this).parent().addClass("active");
});
})
您的意思是将jquery分别放在每个页面中。是的,但是请确保页面和菜单项名称之间有一些映射,这样您就不会硬编码了。您可以在其中一个脚本页面中放置一个函数,并从内容页面的doc.ready调用此方法。使用asp.net菜单控件我正在使用一个非常大的css来合并更改。从此类中删除一个圆形css,然后尝试#menu.active a,#menu li:hover>a{}不走运mahesh。还是一样。它仅在悬停时突出显示菜单项。这在另一个SO主题中得到了回答:它突出显示悬停时的菜单项,而不是当前活动项:(它还将突出显示当前项目。单击页面重定向时,在doc.ready上,我正在检查menuitem的pagename和应用样式。是否确保ItemID、页面名称匹配?例如:ItemID-MenuItem1、pagename=MenuItem1.aspx或pagename=MenuItem1.htmlies它们是相同的。是否可以使我在我发布的css中不会发生这种情况。我认为问题出现在下面提到的行:$(“#“+pageName”).addClass(“active”);$(“#“+pageName”).parent().addClass(“activeLst”);您可以检查在调试时是否能够使用上述行获取菜单项吗?我将检查您发布的css。
<script type="text/javascript">
$(document).ready(function () {
var pageName = getPageName(window.location.href);
$("#" + pageName).addClass("active");
$("#" + pageName).parent().addClass("activeLst");
});
function getPageName(url) {
var index = url.lastIndexOf("/") + 1;
var filenameWithExtension = url.substr(index);
var filename = filenameWithExtension.split(".")[0];
return filename;
}
function redirectOnClick(item) {
debugger;
window.location.href = $(item).text() + ".aspx";
}
</script>
.menuLst
{
float:left;
display:inline;
background-color:Gray;
padding:2x;
}
.menuLst a
{
color:Black;
text-decoration:none;
}
.menuLst a:hover
{
color:white;
text-decoration:none;
}
.menuLst a:active
{
color:Green;
text-decoration:none;
}
.menuLst:hover
{
background-color:Black;
text-decoration:none;
}
.active
{
color:Green !important;
text-decoration:none;
}
.activeLst
{
background-color:Black;
}
$(function () {
$(".navbar‐btn a").each(function () {
if (this.href.trim().split("/").splice(3, 4)[0] == window.location.pathname.split("/").splice(1, 1)[0])
$(this).parent().addClass("active");
});
})