繁体   English   中英

如何在MVC中显示活动的动作链接

[英]How to display active actionlink in MVC

我的_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"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM