我在_Layout.cshtml视图中有一些actionlinks,如下所示:
<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中这样做?
答案 0 :(得分:1)
只需使用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>
答案 1 :(得分:0)
您可以指定一些类到操作链接以提供不同的颜色,您可以为: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;
}
答案 2 :(得分:0)
嗯,快速的方法是让某些页面用户知道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"]