Html.ActionLink转发到控制器权限方法但不转发参数的值

时间:2013-08-29 07:31:30

标签: asp.net-mvc asp.net-mvc-4 routing http-get html.actionlink

在我看来,我有

<dt>User Name</dt>
<dd>@Model.UserName</dd>

这显示了正确的用户名,我在同一视图中也有Html.ActionLink

@Html.ActionLink("Change Password", "ChangeNonAdminPassword", "Account", new { area = ""},new{userName=Model.UserName})

虽然此actionlink将我发送到正确的控制器方法,但我得到的userName值始终为null

这是控制器中的get方法

[HttpGet]
public ActionResult ChangeNonAdminPassword(string userName)
{
    var changePassword = new ChangePassword {UserName = userName};
    return View(changePassword);
}

问题是为什么 userName 在get方法中始终为null,我该怎么做才能发送正确的值?

1 个答案:

答案 0 :(得分:2)

您将userName传递给HTML属性重载。您需要将其添加到路由值重载,与area相同。请改用:

@Html.ActionLink("Change Password", "ChangeNonAdminPassword", "Account", new { area = "", userName = Model.UserName}, new {})