2008-11-25 7 views
85

Je ne peux pas voir pour récupérer un ID que j'envoie dans un html.ActionLink dans mon contrôleur, voici ce que j'essaie de faireASP.NET MVC passant un ID dans un ActionLink au contrôleur

<li> 
    <%= Html.ActionLink("Modify Villa", "Modify", "Villa", new { @id = "1" })%></li> 


    public ActionResult Modify(string ID) 
    { 

     ViewData["Title"] =ID; 
     return View(); 
    } 

C'est ce qu'un tutoriel que j'ai suivi m'a recommandé, mais ça ne marche pas, c'est aussi mettre? Length = 5 à la fin de l'URL!

Merci d'avance!

edit: voici la route que je utilise, il est par défaut

 routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
     ); 

il semble que quelqu'un a downvoted les deux suggestions ci-dessous, mais pas posté leur solution!

Répondre

186

ne ressemble pas à vous en utilisant la surcharge correcte d'ActionLink. Essayez ceci: -

<%=Html.ActionLink("Modify Villa", "Modify", new {id = "1"})%> 

Cela suppose que votre vue se trouve dans le dossier/Views/Villa. Sinon je pense que vous avez besoin: -

<%=Html.ActionLink("Modify Villa", "Modify", "Villa", new {id = "1"}, null)%> 
+4

Bon appel - Le problème est que la première surcharge de cette fonction a « htmlAttributes » comme le quatrième paramètre . L'ajout de ", null" a donc forcé le compilateur à utiliser votre objet en ligne comme paramètres d'itinéraire. –

+0

votre deuxième réponse était bonne! Aucune idée pourquoi quelqu'un vous a rejeté, merci. – Tablet

+1

MERCI! Apprendre MVC3 ..... – felickz

10

Ne mettez pas le @ avant l'id

new { id = "1" } 

Le cadre « traduire » en? Durée quand il y a un décalage dans le paramètre/itinéraire

20

Dans MVC 4, vous pouvez créer un lien d'une vue à un autre contrôleur qui passe l'ID ou la clé primaire via

1

L'ID travaillera avec @ signe en avant aussi, mais nous devons ajouter un paramètre après cela. qui est null

ressembler à:

@Html.ActionLink("Label Name", "Name_Of_Page_To_Redirect", "Controller", new {@id="Id_Value"}, null) 
3

Le MVC 5 est tout à fait similaire

@Html.ActionLink("LinkText", "ActionName", new { id = "id" }) 
Questions connexes