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

Sli*_*nky 4 razor asp.net-mvc-3

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

 @Html.ActionLink("Sign Out", "LogOff", "Account") 
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时:

@Html.ActionLink("Sign Out", "LogOff", "Account",new{@class="btn blue"})  
Run Code Online (Sandbox Code Playgroud)

该链接指向Home控制器,而不是Account控制器因此抛出404.

/Home/LogOff?Length=7
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

谢谢

Dar*_*rov 16

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

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

而你正在使用:

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

看看为什么你的代码不起作用?

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

解决方案:读取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" }
)
Run Code Online (Sandbox Code Playgroud)