如何在 MVC 中显示活动的动作链接
How to display active actionlink in MVC
我的 _Layout.cshtml 视图中有一些操作link如下:
<li>@Html.ActionLink("Signup", "Signup", "Home")</li>
<li>@Html.ActionLink("Login", "Login", "Home")</li>
<li>@Html.ActionLink("Home", "Index", "Home")</li>
我想在选择 Signup
动作 link 时以另一种颜色显示它。
我如何在 ASP.NET MVC 中执行此操作?
您可以将一些 class 分配给动作 link 以提供不同的颜色,您可以为 :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
那样用一些东西来表示用户在哪个页面,然后使用这个标志在 link 上标记 active/inactive class :
<li>@Html.ActionLink("Signup", "Signup", "Home",
new {@class=((ViewBag.IsSignupPage??false)?"signup-highlight":"normal-link")})</li>
您可能有一些通用代码来识别当前视图并相应地突出显示相关 link。您可以使用 ViewContext
获取当前 action 和 _layout.cshtml
中的 controller 以跨页面使用。
ViewContext.RouteData.Values["controller"]
ViewContext.RouteData.Values["action"]
只需使用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>
我的 _Layout.cshtml 视图中有一些操作link如下:
<li>@Html.ActionLink("Signup", "Signup", "Home")</li>
<li>@Html.ActionLink("Login", "Login", "Home")</li>
<li>@Html.ActionLink("Home", "Index", "Home")</li>
我想在选择 Signup
动作 link 时以另一种颜色显示它。
我如何在 ASP.NET MVC 中执行此操作?
您可以将一些 class 分配给动作 link 以提供不同的颜色,您可以为 :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
那样用一些东西来表示用户在哪个页面,然后使用这个标志在 link 上标记 active/inactive class :
<li>@Html.ActionLink("Signup", "Signup", "Home",
new {@class=((ViewBag.IsSignupPage??false)?"signup-highlight":"normal-link")})</li>
您可能有一些通用代码来识别当前视图并相应地突出显示相关 link。您可以使用 ViewContext
获取当前 action 和 _layout.cshtml
中的 controller 以跨页面使用。
ViewContext.RouteData.Values["controller"]
ViewContext.RouteData.Values["action"]
只需使用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>