2009-06-04 46 views
14

我正在尋找一種方法來根據特定條件來改變控制器中的ActionLink類(在模型中找不到,所以我不能寫一個有條件的視圖本身)。但我似乎無法找到允許我使用此元素的ViewData(「名稱」)(我認爲這是可能的,但我錯過了一些東西)。如何動態地改變MVC中的Html.ActionLink的類

我有一個HTML幫手,像這樣在我看來

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

但在我的控制,我不知道如何引用此,像下面添加屬性像類或的onclick。

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

回答

29

您不會從控制器設置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> 
+0

同意,但在需要顯示/隱藏基於用戶憑據的菜單選項(webforms轉換爲MVC)的情況下 - 我如何在MVC中這樣做? – 2009-06-04 17:41:35

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>