ASP.NET MVC3 Razor - Html.ActionLink样式

时间:2011-01-03 20:26:21

标签: css asp.net-mvc-3 razor

我正在尝试设置动作链接的样式,如下所示:

  <text><p>Signed in as @Html.ActionLink(Context.User.Identity.Name,"Index",new { Controller="Account", @style="text-transform:capitalize;" })</p>

我希望将其呈现为

<p>Signed in as <a href="Index" style="text-transform:capitalize;">MyName</a></p>

但是,生成的是

<p>Signed in as <a href="/Account?style=text-transform%3Acapitalize%3B">MyName</a></p>

将样式附加到网址上。我做错了什么?

3 个答案:

答案 0 :(得分:92)

这是签名。

public static string ActionLink(this HtmlHelper htmlHelper, 
                                string linkText,
                                string actionName,
                                string controllerName,
                                object values, 
                                object htmlAttributes)

您正在做的是将valueshtmlAttributes混合在一起。 values用于网址路由。

您可能想要这样做。

@Html.ActionLink(Context.User.Identity.Name, "Index", "Account", null, 
     new { @style="text-transform:capitalize;" });

答案 1 :(得分:8)

VB示例:

 @Html.ActionLink("Home", "Index", Nothing, New With {.style = "font-weight:bold;", .class = "someClass"})

示例Css:

.someClass
{
    color: Green !important;
}

在我的情况下,我发现我需要!important属性来覆盖site.css a:link css class

答案 2 :(得分:3)

恢复旧问题,因为它似乎出现在搜索结果的顶部。

我想保留过渡效果,同时仍然可以设置动作链接的样式,所以我提出了这个解决方案。

  1. 我用一个包含父样式的div包装了动作链接:
  2. <div class="parent-style-one">
          @Html.ActionLink("Homepage", "Home", "Home")
    </div>
    
    1. 接下来,我为div创建CSS,这将是父css,并将由子元素(如动作链接)继承。
    2.   .parent-style-one {
           /* your styles here */
        }
      
      1. 因为所有动作链接都是,当被分解为html时是一个元素所以你只需要在你的css选择中定位该元素:
      2.   .parent-style-one a {
             text-decoration: none;
          }
        
        1. 对于过渡效果,我这样做了:
        2.   .parent-style-one a:hover {
                  text-decoration: underline;
                  -webkit-transition-duration: 1.1s; /* Safari */
                  transition-duration: 1.1s;         
            }
          

          这样我只针对div的子元素,在这种情况下是动作链接,并且仍然能够应用过渡效果。