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!

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

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) 

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


6

On MVC 5 est assez similaire

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

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)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.