2009-06-04 5 views
14

コントローラのActionLinkのクラスを特定の基準に基づいて変更する方法を探しています(モデルには見つかりませんので、ビュー自体に条件付き)。しかし、私はViewData( "名前")と私はこの要素で作業することができます(私はこれが可能であると仮定して見つけることができないが、私は何かが欠けている)。MVCのHtml.ActionLinkのクラスを動的に変更する方法

は私が私の見解

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

にそのようなHTMLヘルパーを持っている。しかし、私のコントローラで私はクラスのようにかのonclick属性を追加するには、以下のように、これを参照するかどうかはわかりません。

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

答えて

29

あなたはそれがビューの関心事なので、CSSは、コントローラからの属性を設定しないでください。

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

代わりにあなたが「手動」あなたのアンカーを構築することができます:あなたは、HTMLは次のようにActionLinkのに属性を追加することができ

<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でどうすればいいですか? –

+1

さらに多くの例で編集されています。 –

+3

資格情報に基づいて表示/非表示にするには、ifブロックで囲むか、ロジックをカプセル化するHtmlHelper拡張メソッドを記述します。ユーザーが認証されている場合は、コントローラーから値を渡してから、ビューでその値を確認できます。 –

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> 
関連する問題