我正在使用s#arp架构2.0与asp.net mvc3.0。母版页中的razor代码如下所示:

 @Html.ActionLink("Logout", "LogOff", "Users", new { style = "color:Blue;" })

由于某种原因,应用程序不再产生正确的链接(控制器用户的操作注销),而是指向当前控制器的操作注销。我没有改变任何东西。我必须在哪里挖掘才能克服这个问题?

生成的链接如下所示:

CurrentControllerName/注销?长度=5

有帮助吗?

解决方案

你在叫一个 错误过载 的ActionLink助手。你是这么做的:

@Html.ActionLink(
    "Logout",                         // linkText
    "LogOff",                         // actionName
    "Users",                          // routeValues
    new { style = "color:Blue;" }     // htmlAttributes
)

很明显,为什么这不会产生正确的url。你正在路过 "Users" 它是帮助程序期望的位置的字符串值 routeValues 它必须代表一个匿名对象。

正确过载 是:

@Html.ActionLink(
    "Logout",                         // linkText
    "LogOff",                         // actionName
    "Users",                          // controllerName
    null,                             // routeValues
    new { style = "color:Blue;" }     // htmlAttributes
)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top