4

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

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

但是当我这样做时:

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

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

/Home/LogOff?Length=7

我究竟做错了什么?

谢谢

4

2 回答 2

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" }
)
于 2013-08-22T20:10:25.427 回答
1

调用 ActionLink 时,有几个重载函数可以调用它。您要使用的是 Html.ActionLink("Link Text", "Action Name", Controller", "Route Values", HTML Attributes")

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

于 2013-08-22T20:13:49.820 回答