Мне интересно, можно ли условно добавить параметр при вызове метода.
Например, я создаю кучу ссылок (всего шесть) для навигации на моем сайте. Мастера:
<%= Html.ActionLink("About", "About", "Pages") %> |
<%= Html.ActionLink("Contact", "Contact", "Pages") %>
<%-- etc, etc. --%>
Я хотел бы включить класс CSS "selected" для ссылки, если он на этой странице. Поэтому в моем контроллере я возвращаю это:
ViewData.Add("CurrentPage", "About");
return View();
И затем в представлении у меня есть словарь htmlAttributes:
<% Dictionary<string,object> htmlAttributes = new Dictionary<string,object>();
htmlAttributes.Add("class","selected");%>
Теперь мой единственный вопрос заключается в том, как включить htmlAttributes для правильной ActionLink. Я мог бы сделать это для каждой ссылки:
<% htmlAttributes.Clear();
if (ViewData["CurrentPage"] == "Contact") htmlAttributes.Add("class","selected");%>
<%= Html.ActionLink("Contact", "Contact", "Pages", htmlAttributes) %>
Но это кажется немного повторяющимся. Есть ли способ сделать что-то вроде этого psuedo-кода:
<%= Html.ActionLink("Contact", "Contact", "Pages", if(ViewData["CurrentPage"] == "Contact") { htmlAttributes }) %>
Этот явно недействительный синтаксис, но есть ли правильный способ сделать это? Я открыт для любых совершенно разных предложений по предоставлению этих ссылок. Я хотел бы остаться с чем-то вроде ActionLink, который использует преимущества моих маршрутов, хотя вместо жесткого кодирования тега.