Bedingt hinzufügen htmlAttributes zu ASP.NET MVC Html.ActionLink

Frage ich mich, ob es möglich ist, bedingt fügen Sie einen parameter in einem Aufruf einer Methode.

Zum Beispiel, ich bin rendering eine Reihe von links (insgesamt sechs) für die navigation in meine Seite.Master:

<%= Html.ActionLink("About", "About", "Pages") %> | 
<%= Html.ActionLink("Contact", "Contact", "Pages") %>
<%-- etc, etc. --%>

Ich würde gerne eine CSS-Klasse "selected" für den link, wenn es auf dieser Seite. Also in meinem controller bin ich wieder in dieser:

ViewData.Add("CurrentPage", "About");
return View();

Und dann in der view habe ich eine htmlAttributes Wörterbuch:

<% Dictionary<string,object> htmlAttributes = new Dictionary<string,object>();
   htmlAttributes.Add("class","selected");%>

Nun, meine Frage ist nur, wie füge ich die htmlAttributes für die ordnungsgemäße ActionLink. Ich könnte es so machen für jeden link:

<% htmlAttributes.Clear();
   if (ViewData["CurrentPage"] == "Contact") htmlAttributes.Add("class","selected");%>
<%= Html.ActionLink("Contact", "Contact", "Pages", htmlAttributes) %>

Aber das scheint ein wenig sich wiederholende. Gibt es eine Möglichkeit, so etwas zu tun psuedo-code:

<%= Html.ActionLink("Contact", "Contact", "Pages", if(ViewData["CurrentPage"] == "Contact") { htmlAttributes }) %>

Offensichtlich keine gültige syntax, aber gibt es einen richtigen Weg das zu tun? Ich bin offen für jede Art von völlig unterschiedlichen Vorschläge für die Darstellung dieser links. Ich möchte bleiben mit so etwas wie ActionLink, die die Vorteile der Verwendung meiner Wege, obwohl statt hart codieren der tag.

InformationsquelleAutor macca1 | 2010-05-13

Schreibe einen Kommentar