如何在MVC中动态更改Html.ActionLink的类

Tor*_*ups 14 css asp.net-mvc html-helper dynamic actionlink

我正在寻找一种方法来根据特定的标准在控制器中改变ActionLink的类(在模型中找不到,所以我不能在视图本身中编写条件).但我似乎无法找到允许我使用此元素工作的ViewData("名称")(我认为这是可能的,但我遗漏了一些东西).

在我看来,我有一个像这样的html助手

<%=Html.ActionLink("View", "Index", "Home")%>
Run Code Online (Sandbox Code Playgroud)

但在我的控制器中,我不知道如何引用它,如下所示添加类或onclick等属性.

ViewData("View").attributes.add("class", "active")
Run Code Online (Sandbox Code Playgroud)

Joh*_*han 29

您没有从控制器设置CSS属性,因为这是视图的一个问题.您可以将HTML属性添加到ActionLink,如下所示:

 <%=Html.ActionLink("View Cases", "Index", "Home", new { @class="active" })%>
Run Code Online (Sandbox Code Playgroud)

或者,您可以"手动"构建锚点:

 <a href="<%=Url.Action("Index", "Home")%>" class="active">View Cases</a>
Run Code Online (Sandbox Code Playgroud)

或者,如果您需要有条件地设置活动类:

 <% var activeClass = someCondition ? "active" : ""; %>
 <a href="<%=Url.Action("Index", "Home")%>" class="<%=activeClass%>">View Cases</a>
Run Code Online (Sandbox Code Playgroud)

  • 对于基于凭证的显示/隐藏,可以使用if块进行环绕,也可以编写HtmlHelper扩展方法来封装逻辑.如果用户已通过身份验证,则可以从控制器传递值,然后在视图中检查该值. (3认同)
  • 谢谢你帮助我做出范式转变!我喜欢这提供的干净分离! (2认同)