ASP.NET MVC passant un ID dans un ActionLink au contrôleur

99

Je ne vois pas pour récupérer un ID que j'envoie dans un html.ActionLink dans mon contrôleur, voici ce que j'essaye de faire

<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, ça met aussi? Length = 5 à la fin de l'URL!

Merci d'avance!

edit: voici l'itinéraire que j'utilise, c'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 ait décliné les deux suggestions ci-dessous mais n'a pas publié sa solution!

Tablette
la source

Réponses:

204

Il ne semble pas que vous utilisiez la bonne surcharge d’ActionLink. Essaye ça:-

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

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

<%=Html.ActionLink("Modify Villa", "Modify", "Villa", new {id = "1"}, null)%>
AnthonyWJones
la source
5
Bon appel - Le problème était que la première surcharge de cette fonction prenait "HtmlAttributes" comme quatrième paramètre. Ainsi, l'ajout de ", null" a forcé le compilateur à utiliser votre objet en ligne comme paramètres d'itinéraire.
Timothy Khouri
27

Dans MVC 4, vous pouvez lier d'une vue à un autre contrôleur en passant l'ID ou la clé primaire via

@Html.ActionLink("Select", "Create", "StudentApplication", new { id=item.PersonId }, null) 
Homme oraculaire
la source
13

Ne mettez pas le @ avant l'identifiant

new { id = "1" }

Le framework le "traduit" en? Longueur quand il y a une discordance dans le paramètre / route

Davide Vosti
la source
6

On MVC 5 est assez similaire

@Html.ActionLink("LinkText", "ActionName", new { id = "id" })
César León
la source
2

L'ID fonctionnera avec @ signe avant, mais nous devons ajouter un paramètre après cela. C'estnull

ressembler:

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