2009-06-04 814 views
14

Estoy buscando una forma de alterar la clase de un ActionLink en el controlador según criterios específicos (no se encuentra en el modelo, así que no puedo escribir un condicional en la vista misma). Pero parece que no puedo encontrar el ViewData ("nombre") que me permite trabajar con este elemento (supongo que es posible, pero me falta algo).Cómo alterar dinámicamente la clase de un Html.ActionLink en MVC

que tienen un ayudante HTML al igual que en mi opinión

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

Pero en mi controlador no estoy seguro de cómo hacer referencia a esto, al igual que el de abajo para agregar un atributo como clase o onclick.

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

Respuesta

29

No establece atributos CSS desde el controlador, ya que eso es una preocupación de la vista. Puede añadir atributos HTML a la ActionLink así:

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

Alternativamente, usted puede construir sus anclas "manual":

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

O si es necesario establecer de forma condicional la clase activa:

<% var activeClass = someCondition ? "active" : ""; %> 
<a href="<%=Url.Action("Index", "Home")%>" class="<%=activeClass%>">View Cases</a> 
+0

estuvo de acuerdo, pero en el caso donde necesito mostrar u ocultar una opción de menú basada en las credenciales del usuario (las formas web se convierten en MVC), ¿cómo puedo hacer eso en MVC? –

+1

Editado con más ejemplos. –

+3

Para mostrar/ocultar en función de las credenciales, rodee con un bloque if o escriba un método de extensión HtmlHelper para encapsular la lógica. Puede pasar un valor desde el controlador si el usuario está autenticado y luego verificarlo en la vista. –

2

En una vista Razor puede hacer algo como esto:

@model AssessmentQuestionViewModel 

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

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