C# 有条件地将Html属性添加到ASP.NET MVC Html.ActionLink

C# 有条件地将Html属性添加到ASP.NET MVC Html.ActionLink,c#,asp.net-mvc,parameters,conditional,actionlink,C#,Asp.net Mvc,Parameters,Conditional,Actionlink,我想知道是否有可能在方法调用中有条件地添加参数 例如,我正在为我的站点中的导航呈现一组链接(总共六个)。Master: <%= Html.ActionLink("About", "About", "Pages") %> | <%= Html.ActionLink("Contact", "Contact", "Pages") %> <%-- etc, etc. --%> 然后在视图中,我有一个htmlAttributes字典: <% Dictionar

我想知道是否有可能在方法调用中有条件地添加参数

例如,我正在为我的站点中的导航呈现一组链接(总共六个)。Master:

<%= Html.ActionLink("About", "About", "Pages") %> | 
<%= Html.ActionLink("Contact", "Contact", "Pages") %>
<%-- etc, etc. --%>
然后在视图中,我有一个htmlAttributes字典:

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

现在我唯一的问题是如何为正确的ActionLink包含HtmLatAttributes。对于每个链接,我都可以这样做:

<% 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之类的工具,它利用我的路线,而不是硬编码标签。

这里有三个选项:

<%= 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>


完美答案。谢谢你的选择!我发现这不适用于disabled属性,因为浏览器在
disabled=”“
的情况下禁用html元素。编写自己的html助手方法似乎是这种情况下的唯一解决方案。从MVC4开始,您可以将任何属性设置为null,而它根本不会呈现该属性。
<%= 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>