c# - asp.NET - 菜单上选定页面的静态选定样式问题

标签 c# asp.net css visual-studio-2010

我正在使用带有 C# 的 asp.NET 4.0,并且最近为我的本地 Web 应用程序创建了自定义设计。我希望当一个页面被选中时,它有不同的背景颜色(通常在纯 html + css 中我们只是将一个菜单项设置为事件状态)。我尝试使用但它不起作用,它与其他颜色保持相同。有没有人有这方面的经验?

Site Master 中的代码:

            <h2>Dashboard</h2>
            <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Vertical" >
                <StaticSelectedStyle CssClass="selectedMenu" /> 
                <Items>
                    <asp:MenuItem NavigateUrl="~/Default.aspx" Text="View Submissions"/>
                    <asp:MenuItem NavigateUrl="~/Imports.aspx" Text="Import"/>
                    <asp:MenuItem NavigateUrl="~/Submission.aspx" Text="Insert Submission"/>
                    <asp:MenuItem NavigateUrl="~/Reports.aspx" Text="Reports"/>
                    <asp:MenuItem NavigateUrl="~/CurrencyMaintenance.aspx" Text="Currency Maintenance" />
                    <asp:MenuItem NavigateUrl="~/Remittance.aspx" Text="Remittance" />
                </Items>
            </asp:Menu>

CSS:

/* TAB MENU   
----------------------------------------------------------*/
div.hideSkiplink
{
    background-color:#3a4f63;
    width:100%;
}

div.menu
{
    padding: 4px 0px 4px 8px;
}

div.menu ul
{
    list-style: none;
    margin: 0px;
    padding: 0px;
    width: auto;
}

div.menu ul li a, div.menu ul li a:visited
{
    background-color: #FFF; /*680840*/
    border: 1px #4e667d solid;
    height: 20px;
    width: 175px;
    color: #000; /*FFF*/
    display: block;
    line-height: 1.35em;
    padding: 4px 20px;
    text-decoration: none;
    white-space: nowrap;
}

div.menu ul li a:hover
{
    background-color: #680840;
    color: #FFF;
    text-decoration: none;
}

.selectedMenu
{
    background-color: #680840 !important;
    color: #FFF !important;
    text-decoration: none !important;
}

div.menu ul li a:active
{
    background-color: #680840;
    color: #cfdbe6;
    text-decoration: none;
}

这是悬停时的样子,我希望在选中时有类似的效果。

Menu

最佳答案

这似乎是 .NET 菜单的错误。关于此 here 有一些信息.那么您可能想要做的是删除 staticSelectedStyle 属性并将其简单地添加到您的 css 中:

.menu a.static.selected
{
    background-color: #680840 !important;
    color: #FFF !important;
    text-decoration: none !important;
}

您可能还必须向您的母版页面加载添加一些代码以确定应该选择哪个元素,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    string path = Request.AppRelativeCurrentExecutionFilePath;
    foreach (MenuItem item in NavigationMenu.Items)
    {
        item.Selected = item.NavigateUrl.Equals(path, StringComparison.InvariantCultureIgnoreCase);
    }
}

关于c# - asp.NET - 菜单上选定页面的静态选定样式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7148872/

相关文章:

html - 如何在它们之间留出空间?

c# - 如何检查从此 Linq 查询中检索到的值作为 .ToLower()?

c# - CMD C# Window应用程序ProcessStartInfo

c# - 托管网络应用程序

c# - 创建新的 WPF 项目时已添加具有相同键的项目

.net - 如何将自定义对象添加到 DropDownList 项目?

html - 在 div 内水平居中元素

asp.net - 使用 ASP.NET 进行 HTML 编码

.net - 可扩展性的最佳数据访问范例是什么?

html - Safari Mobile 和对象位置属性