Передача строки в Html.ActionLink в MVC 2 - PullRequest
0 голосов
/ 09 января 2011

Я заполнил приложение MVC Music Store, и сейчас я делаю свои собственные модификации для практики, а также чтобы подготовить меня к выполнению аналогичных задач в моей работе.

То, что я сделал, - это создание представлениякоторый отображает текущий список пользователей.Я сделал это, так как хочу изменить пароли пользователей, если они их забудут.Вот отрывок из моего представления:

<% foreach (MembershipUser user in Model) { %>

<tr>
    <td><%: Html.ActionLink(user.UserName, "changeUserPassword", 
        "StoreManager", new { username = user.UserName }) %></td>
    <td><%: user.LastActivityDate %></td>
    <td><%: user.IsLockedOut %></td>
</tr>

<% }%>

То, что я хочу знать, возможно ли передать имя пользователя через ссылку на действие, как я делал выше.Я зарегистрировал следующий маршрут в файле global.asax.cs, однако я не уверен, правильно ли я это сделал:

routes.MapRoute(
    "AdminPassword", //Route name
    "{controller}/{action}/{username}", //URL with parameters
    new { 
        controller = "StoreManager", 
        action = "changeUserPassword", 
        username = UrlParameter.Optional
    });

Вот мое действие GET:

public ActionResult changeUserPassword(string username)
{
    ViewData["username"] = username;

    return View();
}

Я отладил код и обнаружил, что ViewData ["username"] = username не заполняется, поэтому похоже, что либо я не зарегистрировал маршруты должным образом, либо я просто не могу передать имя пользователя с помощью actionlink, как у меня.

Буду признателен, если кто-нибудь укажет мне правильное направление.

1 Ответ

2 голосов
/ 09 января 2011

Вы, кажется, используете неправильную подпись метода, я думаю, вы используете эту

Вы хотите сделать

Html.ActionLink(user.UserName, "changeUserPassword", 
    new { controller = "StoreManager", username = user.UserName });

Или вы можете сделать

Html.RouteLink(user.UserName, "AdminPassword", 
    new { username = user.UserName });
...