2009-06-04 15 views
14

Sto cercando un modo per modificare la classe di un ActionLink nel controller in base a criteri specifici (non presente nel modello, quindi non posso scrivere un condizionale nella vista stessa). Ma non riesco a trovare il ViewData ("nome") che mi permette di lavorare con questo elemento (presumo che sia possibile, ma mi manca qualcosa).Come modificare dinamicamente la classe di un Html.ActionLink in MVC

Ho un aiutante html in questo modo, a mio avviso

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

Ma nel mio controller non sono sicuro di come fare riferimento a questo, come di seguito per aggiungere un attributo come classe o onclick.

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

risposta

29

Non si impostano gli attributi CSS dal controller poiché questo è un problema della vista. È possibile aggiungere attributi HTML al ActionLink in questo modo:

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

In alternativa è possibile costruire le vostre ancore "manualmente":

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

O se è necessario impostare in modo condizionale della classe attiva:

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

concordato, ma nel caso in cui ho bisogno di mostrare/nascondere un'opzione di menu in base alle credenziali dell'utente (le webform convertite in MVC), come posso farlo in MVC? –

+1

Modificato con altri esempi. –

+3

Per mostrare/nascondere in base alle credenziali, circondare con un blocco if o scrivere un metodo di estensione HtmlHelper per incapsulare la logica. È possibile passare un valore dal controller se l'utente è autenticato, quindi verificarlo nella vista. –

2

In una vista Razor puoi fare qualcosa del genere:

@model AssessmentQuestionViewModel 

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

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