我写了一个自定义的HtmlHelper来应用......
class = "active"
到菜单项,如果那是当前页面。查看源代码后,我知道这是正常工作,但在我当前的设置中,我似乎无法将.active类作为目标应用任何样式。
当前HTML
<ul id="menu">
<li>@Html.MenuItem("Home", "Index", "Home")</li>
<li>@Html.MenuItem("About", "About", "Home")</li>
</ul>
当前CSS
#menu { width: 100%;
padding: 0;
margin: 0;
list-style-type: none;
padding-top: 6px; }
#menu a { width: 100%;
font-weight: bold;
text-decoration: none;
color: #ffffff;
padding: 6px 8px 6px 8px;
text-shadow: 1px 1px 1px #8292a2; }
#menu a:hover { background-color: #e8eff6; color: #2a3744; text-shadow: 1px 1px 1px #e8eff6; }
#menu li { display: inline; }
我假设我在这里遇到了一个特殊性问题,但我似乎无法将“活动”类作为目标来应用任何类型的样式。
#menu a.active
#menu li a.active
似乎没什么用。有什么想法吗?
修改 自定义HtmlHelper我正在使用
public static class MenuExtensions
{
public static MvcHtmlString MenuItem(
this HtmlHelper htmlHelper,
string text,
string action,
string controller
)
{
string value;
var routeData = htmlHelper.ViewContext.RouteData;
var currentAction = routeData.GetRequiredString("action");
var currentController = routeData.GetRequiredString("controller");
if (string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase) &&
string.Equals(currentController, controller, StringComparison.OrdinalIgnoreCase))
{
value = htmlHelper.ActionLink(text, action, new { controller = controller }, new { @class = "active" }).ToHtmlString();
return MvcHtmlString.Create(value.ToString());
}
value = htmlHelper.ActionLink(text, action, controller).ToHtmlString();
return MvcHtmlString.Create(value.ToString());
}
}
通过查看来源
输出HTML<ul id="menu">
<li><a class="active" href="/">Home</a></li>
<li><a href="/Home/About">About</a></li>
</ul>
正如我所说,我知道它有效,我似乎无法定位“活跃”类,即使它存在......
答案 0 :(得分:3)
你放了a.active,你应该像使用悬停时那样使用“:”。 a:active
编辑:重新阅读你的问题后,你的意思是一个自定义的css类,用于链接到用户当前所在页面的菜单项吗?在这种情况下,我使用ASP的方式,它将自动为您处理这些菜单项。否则,我看不到您在菜单项中指定该类的位置?这肯定是第一个问题。