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!

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

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) 

13

Jangan meletakkan @ sebelum id

new { id = "1" }

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


6

Di MVC 5 sangat mirip

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

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)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.