Pasando una cadena en Html.ActionLink en MVC 2

He completado la aplicación MVC Music Store y ahora estoy haciendo mis propias modificaciones para practicar y también para prepararme para realizar tareas similares en mi trabajo.

Lo que he hecho es crear una vista que muestre la lista actual de usuarios. He hecho esto porque quiero poder cambiar las contraseñas de los usuarios en caso de que las olviden. Aquí hay un fragmento de mi vista:

<% 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>

<% }%>

Lo que quiero saber es si es posible pasar el nombre de usuario a través del enlace de acción como hice anteriormente. He registrado la siguiente ruta en el archivo global.asax.cs, sin embargo, no estoy seguro de haberlo hecho correctamente:

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

Aquí está mi acción GET:

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

    return View();
}

He depurado el código para encontrar que ViewData ["nombre de usuario"] = nombre de usuario no se completa, por lo que parece que no he registrado las rutas correctamente o simplemente no puedo pasar el nombre de usuario usando el enlace de acción como lo hice.

Estaría agradecido si alguien pudiera señalarme en la dirección correcta.

preguntado el 09 de enero de 11 a las 00:01

1 Respuestas

Parece que estás usando la firma de método incorrecta, creo que estás usando esta

Quieres hacer

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

O puedes hacer

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

Respondido el 09 de enero de 11 a las 04:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.