扩展扩展方法

时间:2018-03-05 08:53:18

标签: c# asp.net asp.net-mvc

我有一个扩展方法,如下所示:

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的边框。一切正常。但是,在ActiveCompleted视图中概述了一组项目,用户可以点击每个项目并获得更深入的详细信息。点击该项目后,用户将导航至Common/ItemDetails/itemId

现在我面临的问题是,当用户点击“活动”或“已完成”视图中的某个项目时,li项目都不包含边框。有人可以告诉我如何实现这一目标。

我想要的行为是,如果用户点击Active视图中的某个项目并导航到Common/ItemDetails/itemId,则Active li会有一个边框, Completed视图

的相同行为

0 个答案:

没有答案