我有一个扩展方法,如下所示:
public static MvcHtmlString IsSelected(this HtmlHelper htmlHelper, string controller, string action)
{
var routeData = htmlHelper.ViewContext.RouteData;
var routeAction = routeData.Values["action"].ToString();
var routeController = routeData.Values["controller"].ToString();
return controller == routeController && action == routeAction
? MvcHtmlString.Create("is-selected")
: MvcHtmlString.Create("is-not-selected");
}
你可以看到它相当直接,并没有做任何花哨的事情。这在_Layout
中称为:
<li class="@Html.IsSelected("Common", "Active")">@Html.ActionLink("Active", "Active", "Common")</li>
<li class="@Html.IsSelected("Common", "Completed")">@Html.ActionLink("Completed", "Completed", "Common")</li>
然后将相关类添加到在{css中设置样式的li
项中:
.is-selected {
border-bottom: 3px solid;
}
最终结果是is-selected
导航项具有更好ux的边框。一切正常。但是,在Active
和Completed
视图中概述了一组项目,用户可以点击每个项目并获得更深入的详细信息。点击该项目后,用户将导航至Common/ItemDetails/itemId
现在我面临的问题是,当用户点击“活动”或“已完成”视图中的某个项目时,li
项目都不包含边框。有人可以告诉我如何实现这一目标。
我想要的行为是,如果用户点击Active
视图中的某个项目并导航到Common/ItemDetails/itemId
,则Active
li
会有一个边框, Completed
视图