ASP.NET MVC meneruskan ID di ActionLink ke controller

99

Saya tidak dapat melihat untuk mengambil ID yang saya kirim dalam html. ActionLink di pengontrol saya, inilah yang saya coba lakukan

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


    public ActionResult Modify(string ID)
    {

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

Itulah yang direkomendasikan oleh tutorial yang saya ikuti, tetapi tidak berhasil, itu juga meletakkan? Panjang = 5 di akhir URL!

Terima kasih sebelumnya!

edit: ini adalah rute yang saya gunakan, defaultnya

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

tampaknya seseorang telah memberikan suara negatif pada dua saran di bawah ini tetapi tidak memposting solusi mereka!

Tablet
sumber

Jawaban:

204

Sepertinya Anda tidak menggunakan kelebihan ActionLink yang benar. Coba ini:-

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

Ini mengasumsikan tampilan Anda berada di bawah folder / Views / Villa. Jika tidak, saya rasa Anda membutuhkan: -

<%=Html.ActionLink("Modify Villa", "Modify", "Villa", new {id = "1"}, null)%>
AnthonyWJones
sumber
5
Panggilan bagus - Masalahnya adalah kelebihan pertama dari fungsi itu mengambil "HtmlAttributes" sebagai parameter keempat. Jadi menambahkan ", null" memaksa kompilator untuk menggunakan objek sebaris Anda sebagai parameter rute.
Timothy Khouri
27

Di MVC 4 Anda dapat menautkan dari satu tampilan ke pengontrol lain yang meneruskan Id atau Kunci Primer melalui

@Html.ActionLink("Select", "Create", "StudentApplication", new { id=item.PersonId }, null) 
Pria yang Luar Biasa
sumber
13

Jangan meletakkan @ sebelum id

new { id = "1" }

Framework "menerjemahkan" ke dalam? Lenght ketika ada ketidakcocokan dalam parameter / rute

Davide Vosti
sumber
6

Di MVC 5 sangat mirip

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

ID juga akan berfungsi dengan @sign in front, tetapi kita harus menambahkan satu parameter setelah itu. itu adalahnull

terlihat seperti:

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