2011-01-09 7 views
0

Ich habe die MVC Music Store-Anwendung abgeschlossen, und jetzt mache ich meine eigenen Modifikationen für die Praxis, und auch mich auf ähnliche Aufgaben in meinem Job vorzubereiten.Übergeben einer Zeichenfolge in Html.ActionLink in MVC 2

Was ich getan habe, ist eine Ansicht erstellen, die die aktuelle Liste der Benutzer anzeigt. Ich habe das so gemacht, wie ich die Kennwörter von Benutzern ändern möchte, sollten sie sie vergessen. Hier ist ein Ausschnitt aus meiner Sicht:

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

<% }%> 

Was ich wissen will, ist es möglich, die Benutzername durch den Actionlink passieren, wie ich oben getan habe. Ich habe die folgende Route in der global.asax.cs Datei registriert, aber ich bin nicht sicher, ob ich es richtig gemacht habe:

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

Hier ist meine GET Aktion:

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

    return View(); 
} 

ich gedebuggt haben durch der Code, um zu finden, dass ViewData ["username"] = Benutzername nicht auffüllt, so sieht es entweder so aus, als hätte ich die Routen nicht richtig registriert, oder ich kann einfach den Benutzernamen nicht mit dem Actionlink übergeben, wie ich es habe.

Ich wäre dankbar, wenn mir jemand in die richtige Richtung zeigen könnte.

Antwort

2

Sie scheinen mit der falschen Methode Unterschrift werden, ich glaube, Sie this one

Sie verwenden

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

tun möchten Oder Sie können

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