Как динамически изменить класс Html.ActionLink в MVC - PullRequest
14 голосов
/ 04 июня 2009

Я ищу способ изменить класс ActionLink в контроллере на основе определенных критериев (не найден в модели, поэтому я не могу написать условие в самом представлении). Но я не могу найти ViewData («имя»), которая позволяет мне работать с этим элементом (я предполагаю, что это возможно, но я что-то упускаю).

На мой взгляд, у меня есть html-помощник

<%=Html.ActionLink("View", "Index", "Home")%>

Но в моем контроллере я не уверен, как ссылаться на это, как показано ниже, чтобы добавить атрибут, такой как class или onclick.

ViewData("View").attributes.add("class", "active")

Ответы [ 2 ]

29 голосов
/ 04 июня 2009

Вы не устанавливаете атрибуты CSS из контроллера, так как это касается представления. Вы можете добавить атрибуты HTML в ActionLink следующим образом:

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

В качестве альтернативы вы можете построить свои якоря "вручную":

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

Или, если вам нужно условно установить активный класс:

 <% var activeClass = someCondition ? "active" : ""; %>
 <a href="<%=Url.Action("Index", "Home")%>" class="<%=activeClass%>">View Cases</a>
2 голосов
/ 19 июля 2012

В режиме Razor вы можете сделать что-то вроде этого:

@model AssessmentQuestionViewModel

@{var newClass = Model.AnswerValue == 0 ? "not-answered" : string.Empty;}

<a href="@Url.Action("Index", "Home")" class="wizard-step @newClass">View Question</a>
...