4

このリンクにクラスを追加する必要があります。

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

しかし、私がこれを行うとき:

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

リンクはアカウント コントローラーではなくホーム コントローラーを指しているため、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
)

コードが機能しない理由がわかりますか?

ええ、Microsoft はこれらの過負荷をめちゃくちゃにしました。注意しないと、罠にはまってしまいます。

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 に答える