ASP.NET MVC che passa un ID in un ActionLink al controller


99

Non riesco a vedere per recuperare un ID che sto inviando in un html.ActionLink nel mio controller, ecco cosa sto cercando di fare

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


    public ActionResult Modify(string ID)
    {

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

Questo è ciò che un tutorial che ho seguito mi ha consigliato, ma non funziona, sta anche mettendo? Lunghezza = 5 alla fine dell'URL!

Grazie in anticipo!

modifica: ecco il percorso che sto utilizzando, è predefinito

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

sembra che qualcuno abbia svalutato i due suggerimenti di seguito ma non abbia pubblicato la loro soluzione!

Risposte:


204

Non sembra che tu stia utilizzando il corretto sovraccarico di ActionLink. Prova questo:-

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

Ciò presuppone che la tua vista si trovi nella cartella / Views / Villa. In caso contrario, sospetto che tu abbia bisogno di: -

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

5
Buona chiamata - Il problema era che il primo overload di quella funzione prendeva "HtmlAttributes" come quarto parametro. Quindi l'aggiunta di ", null" ha costretto il compilatore a utilizzare il tuo oggetto inline come parametri di route.
Timothy Khouri

27

In MVC 4 è possibile collegarsi da una vista a un altro controller passando l'ID o la chiave primaria tramite

@Html.ActionLink("Select", "Create", "StudentApplication", new { id=item.PersonId }, null) 

13

Non mettere la @ prima dell'id

new { id = "1" }

Il framework lo "traduce" in? Lenght quando c'è una mancata corrispondenza nel parametro / route


6

Su MVC 5 è abbastanza simile

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

2

L'ID funzionerà anche con il @segno davanti, ma dopo dobbiamo aggiungere un parametro. questo ènull

Assomiglia a:

@Html.ActionLink("Label Name", "Name_Of_Page_To_Redirect", "Controller", new {@id="Id_Value"}, null)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.