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.