Условно добавьте htmlAttributes к ASP.NET HTML MVC. ActionLink

Я задаюсь вопросом, возможно ли условно добавить параметр в вызове к методу.

Например, я представляю набор ссылок (шесть общих количеств) для навигации в моем Сайте. Ведущее устройство:

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

Я хотел бы включать класс CSS "выбранных" для ссылки, если это находится на той странице. Таким образом в моем контроллере я возвращаю это:

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, который использует в своих интересах использование моих маршрутов хотя вместо трудного кодирования тега.

10
задан macca1 13 May 2010 в 04:12
поделиться

1 ответ

Вот три варианта:

<%= Html.ActionLink("Contact", "Contact", "Pages", 
         new { @class = ViewData["CurrentPage"] == "Contact" ? "selected" : "" }) %>

<%= Html.ActionLink("Contact", "Contact", "Pages", 
         ViewData["CurrentPage"] == "Contact" ? new { @class = "selected" } : null) %>

<a href="<%=Url.Action("Contact", "Pages")%>" 
   class="<%=ViewData["CurrentPage"] == "Contact" ? "selected" : "" %>">Contact</a>
15
ответ дан 3 December 2019 в 22:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: