ASP.NET MVC chuyển một ID trong ActionLink tới bộ điều khiển


98

Tôi không thể truy xuất ID mà tôi đang gửi trong một html. Liên kết hành động trong bộ điều khiển của tôi, đây là những gì tôi đang cố gắng thực hiện

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


    public ActionResult Modify(string ID)
    {

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

Đó là những gì mà một hướng dẫn mà tôi đã làm theo khuyến nghị, nhưng nó không hoạt động, nó cũng đặt? Length = 5 ở cuối URL!

Cảm ơn trước!

chỉnh sửa: đây là tuyến đường tôi đang sử dụng, nó là mặc định

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

Có vẻ như ai đó đã phản đối hai đề xuất bên dưới nhưng không đăng giải pháp của họ!

Câu trả lời:


203

Có vẻ như bạn đang sử dụng quá tải ActionLink chính xác. Thử cái này:-

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

Điều này giả sử chế độ xem của bạn nằm trong thư mục / Views / Villa. Nếu không thì tôi nghi ngờ bạn cần: -

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

4
Lời gọi tốt - Vấn đề là quá tải đầu tiên của hàm đó đã lấy "HtmlAttributes" làm tham số thứ tư. Vì vậy, việc thêm ", null" buộc trình biên dịch phải sử dụng đối tượng nội tuyến của bạn làm tham số tuyến.
Timothy Khouri

26

Trong MVC 4, bạn có thể liên kết từ một chế độ xem đến một bộ điều khiển khác thông qua Id hoặc Khóa chính thông qua

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

12

Không đặt @ trước id

new { id = "1" }

Khung "dịch" nó sang? Chiều dài khi có sự không khớp trong tham số / tuyến đường


5

Trên MVC 5 cũng khá tương tự

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

1

ID sẽ hoạt động với @ ký hiệu ở phía trước, nhưng chúng tôi phải thêm một tham số sau đó. đó lànull

trông giống như:

@Html.ActionLink("Label Name", "Name_Of_Page_To_Redirect", "Controller", new {@id="Id_Value"}, null)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.