如何在MVC中显示活动的actionlink
本文关键字:活动 actionlink 显示 MVC | 更新日期: 2023-09-27 17:59:30
我的_Layout.cshtml视图中有一些操作链接,如下所示:
<li>@Html.ActionLink("Signup", "Signup", "Home")</li>
<li>@Html.ActionLink("Login", "Login", "Home")</li>
<li>@Html.ActionLink("Home", "Index", "Home")</li>
我想在选择Signup
动作链接时以另一种颜色显示它。如何在ASP.NET MVC中做到这一点?
只需使用ViewContext.RouteData中包含的值,即Action和Controller值。我们可以在你目前拥有的基础上使用这种
<li class=@(ViewContext.RouteData.Values["Action"].ToString() == "Signup" ? "active" : "")>@Html.ActionLink("Signup", "Signup", "Home")</li>
<li class=@(ViewContext.RouteData.Values["Action"].ToString() == "Login" ? "active" : "")>@Html.ActionLink("Login", "Login", "Home")</li>
<li class=@(ViewContext.RouteData.Values["Action"].ToString() == "Index" ? "active" : "")>@Html.ActionLink("Home", "Index", "Home")</li>
如果你需要控制器意味着只需检查的状况
<li class=@(ViewContext.RouteData.Values["controller"].ToString() == "Home" ? "active" : "")>@Html.ActionLink("Home", "Index", "Home")</li>
你可以给动作链接分配一些类来赋予不同的颜色,你可以为:active、:hover、:visited等赋予不同的风格。
Html
<li>@Html.ActionLink("Signup", "Signup",
new { controller = "Home", id = 1 },
new { @class = "anchor-class" })</li>
<li>@Html.ActionLink("Login", "Login", "Home")</li>
<li>@Html.ActionLink("Home", "Index", "Home")</li>
CSS
.anchor-class
{
color:red;
}
好吧,快速的方法是用一些东西来表示用户在哪个页面上,比如ViewBag.IsSignupPage
,然后用这个标志来标记链接上的活动/非活动类:
<li>@Html.ActionLink("Signup", "Signup", "Home",
new {@class=((ViewBag.IsSignupPage??false)?"signup-highlight":"normal-link")})</li>
您可能有一些通用代码来识别当前视图并相应地突出显示相关链接。您可以使用ViewContext
获取当前操作,并使用_layout.cshtml
中的控制器跨页使用。
ViewContext.RouteData.Values["controller"]
ViewContext.RouteData.Values["action"]