Как динамически изменять класс Html.ActionLink в MVC
Я ищу способ изменить класс ActionLink в контроллере на основе определенных критериев (не найденных в модели, поэтому я не могу написать условие в самом представлении). Но я не могу найти ViewData ( "name" ), который позволяет мне работать с этим элементом (я предполагаю, что это возможно, но я чего-то не хватает).
У меня есть html-помощник, похожий на мой взгляд
<%=Html.ActionLink("View", "Index", "Home")%>
Но в моем контроллере я не уверен, как ссылаться на это, как показано ниже, чтобы добавить атрибут типа class или onclick.
ViewData("View").attributes.add("class", "active")
Ответы
Ответ 1
Вы не устанавливаете атрибуты 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
В окне 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>