将类添加到Html.ActionLink - ASP.NET MVC 3

时间:2013-08-22 20:09:35

标签: asp.net-mvc-3 razor

我需要在此链接中添加一个类:

 @Html.ActionLink("Sign Out", "LogOff", "Account") 

但是当我这样做时:

@Html.ActionLink("Sign Out", "LogOff", "Account",new{@class="btn blue"})  

该链接指向归属控制器,而不是帐户控制器,从而抛出404。

/Home/LogOff?Length=7

我做错了什么?

由于

2 个答案:

答案 0 :(得分:16)

尝试使用ActionLink帮助程序的正确重载(是的,有过多的重载):

@Html.ActionLink(
    "Sign Out",                  // linkText
    "LogOff",                    // actionName
    "Account",                   // controllerName
    null,                        // routeValues
    new { @class = "btn blue" }  // htmlAttributes
)

而你正在使用:

@Html.ActionLink(
    "Sign Out",                    // linkText
    "LogOff",                      // actionName
    "Account",                     // routeValues
    new { @class = "btn blue" }    // htmlAttributes
)

了解您的代码无效的原因?

是的,微软对这些超载造成了一团糟,如果你不小心,你会陷入陷阱。

解决方案:阅读MSDN或使用Visual Studio Intellisense( F12 ,而光标位于ActionLink帮助程序上)。

出于这个原因,我更喜欢使用C#4.0命名参数以模式显式方式编写它:

@Html.ActionLink(
    linkText:       "Sign Out",
    actionName:     "LogOff",
    controllerName: "Account",
    routeValues:    null,
    htmlAttributes: new { @class = "btn blue" }
)

答案 1 :(得分:1)

调用ActionLink时,有几个重载函数可以调用它。您要使用的是Html.ActionLink(“链接文本”,“操作名称”,控制器“,”路由值“,HTML属性”)

这样的事情:@Html.ActionLink("Sign Out", "LogOff", "Account", null, new{@class="btn blue"})