Como alterar dinamicamente a classe de um Html.ActionLink no MVC
-
11-09-2019 - |
Pergunta
Eu estou procurando uma maneira de alterar a classe de um ActionLink no controlador com base em critérios específicos (não encontrada no modelo, então não posso escrever uma condicional na própria vista). Mas eu não consigo encontrar o ViewData ( "nome") que me permite trabalhar w / este elemento (eu assumo isso é possível, mas eu estou faltando alguma coisa).
Eu tenho um html helper como assim na minha opinião
<%=Html.ActionLink("View", "Index", "Home")%>
Mas no meu controlador eu não tenho certeza de como fazer referência a isso, como o abaixo para adicionar um atributo como classe ou onclick.
ViewData("View").attributes.add("class", "active")
Solução
Você não definir CSS a partir do controlador já que é uma preocupação do ponto de vista. Você pode adicionar atributos HTML para o ActionLink assim:
<%=Html.ActionLink("View Cases", "Index", "Home", new { @class="active" })%>
Como alternativa, você pode construir suas âncoras "manualmente":
<a href="<%=Url.Action("Index", "Home")%>" class="active">View Cases</a>
Ou se você precisa condicionalmente definir a classe ativa:
<% var activeClass = someCondition ? "active" : ""; %>
<a href="<%=Url.Action("Index", "Home")%>" class="<%=activeClass%>">View Cases</a>
Outras dicas
Em um Navalha ver que puder fazer algo como isto:
@model AssessmentQuestionViewModel
@{var newClass = Model.AnswerValue == 0 ? "not-answered" : string.Empty;}
<a href="@Url.Action("Index", "Home")" class="wizard-step @newClass">View Question</a>