ASP.NET MVC ส่งผ่าน ID ใน ActionLink ไปยังคอนโทรลเลอร์


100

ฉันไม่เห็นเพื่อดึง ID ที่ฉันส่งเป็น html.ActionLink ในคอนโทรลเลอร์ของฉันนี่คือสิ่งที่ฉันกำลังพยายามทำ

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


    public ActionResult Modify(string ID)
    {

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

นั่นคือสิ่งที่ฉันทำตามแบบฝึกหัดที่แนะนำ แต่มันใช้งานไม่ได้มันยังใส่ความยาว = 5 ที่ท้าย URL!

ขอบคุณล่วงหน้า!

แก้ไข: นี่คือเส้นทางที่ฉันใช้เป็นค่าเริ่มต้น

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

ดูเหมือนว่ามีคนลงคะแนนสองคำแนะนำด้านล่าง แต่ไม่โพสต์วิธีแก้ปัญหา!

คำตอบ:


205

ดูเหมือนว่าคุณกำลังใช้ ActionLink มากเกินไป ลองสิ่งนี้: -

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

ถือว่ามุมมองของคุณอยู่ในโฟลเดอร์ / Views / Villa ถ้าไม่เช่นนั้นฉันสงสัยว่าคุณต้องการ: -

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

5
การโทรที่ดี - ปัญหาคือการโอเวอร์โหลดครั้งแรกของฟังก์ชันนั้นทำให้ "HtmlAttributes" เป็นพารามิเตอร์ที่สี่ ดังนั้นการเพิ่ม "null" จึงบังคับให้คอมไพเลอร์ใช้วัตถุอินไลน์ของคุณเป็นพารามิเตอร์เส้นทาง
Timothy Khouri

28

ใน MVC 4 คุณสามารถเชื่อมโยงจากมุมมองหนึ่งไปยังตัวควบคุมอื่นโดยส่งรหัสหรือคีย์หลักผ่าน

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



2

ID จะทำงานร่วมกับ@sign ข้างหน้าด้วย แต่เราต้องเพิ่มพารามิเตอร์หนึ่งตัวหลังจากนั้น นั่นคือnull

ดูเหมือน:

@Html.ActionLink("Label Name", "Name_Of_Page_To_Redirect", "Controller", new {@id="Id_Value"}, null)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.