2009-12-06 41 views
5

Tôi có bảng liệt kê các sản phẩm cũng như hiển thị hộp văn bản số lượng và Html.ActionLink. Mỗi hộp văn bản số lượng có một id duy nhất bắt nguồn từ id sản phẩm. Tôi nghĩ rằng điều này nên được đơn giản nhưng tôi dường như không thể tìm ra cách để có được giá trị trong hộp văn bản liên kết thông qua bộ điều khiển của tôi khi người dùng nhấp vào liên kết. Mã của tôi là dưới đây và bất kỳ trợ giúp được đánh giá cao.Truyền giá trị hộp văn bản bằng cách sử dụng Html.ActionLink

<% foreach (var item in Model) { %> 

    <tr> 
     <td> 
      <%= Html.Encode(item.Id) %> 
     </td> 
     <td> 
      <%= Html.Encode(item.Description) %> 
     </td> 
     <td> 
      <%= Html.Encode(String.Format("${0:F}", item.Cost)) %> 
     </td> 
     <td> 
      <%= Html.TextBox(String.Format("quantity{0}", item.Id), "0") %> 
     </td> 
     <td> 
      <%= Html.ActionLink("Add", "Add", new { id = item.Id, quantity="I want the quantity here?" })%> 
     </td> 
    </tr> 

Trả lời

2

Tôi nghĩ rằng những gì bạn muốn đây là:

<%= Html.TextBox(String.Format("item[{0}].quantity", item.Id), "0") %> 

Có một cái nhìn tại Scott Hanselman bài viết trên blog sau để biết thêm chi tiết về vấn đề này:

ASP.NET Wire Format for Model Binding to Arrays, Lists, Collections, Dictionaries

Xem cũng là bài đăng trên blog này của Steve Sanderson. Nó sẽ cho phép bạn chỉnh sửa các mặt hàng duy nhất:

Sửa đổi một danh sách chiều dài thay đổi các mục trong ASP.NET MVC
http://blog.codeville.net/2008/12/22/editing-a-variable-length-list-of-items-in-aspnet-mvc/

+0

Xin lỗi, tôi nghĩ câu hỏi của tôi không được viết nhiều. Tôi muốn bất cứ giá trị nào người dùng đặt trong hộp văn bản được chuyển đến bộ điều khiển của tôi khi họ nhấp vào liên kết thêm. –

+0

Về cơ bản, mã ban đầu của bạn gợi ý ràng buộc vào một danh sách, nhưng mô tả yêu cầu của bạn gợi ý ràng buộc một bản ghi duy nhất. –

3

Không có cách nào để làm điều này trong HTML, do đó không có một cách để làm điều này trong ASP.NET MVC.

Có hai giải pháp có thể để điều này mà bạn có thể chọn từ:

  1. Sử dụng Javascript như vậy mà khi người dùng chỉnh sửa các textbox bạn tự động thay đổi giá trị của thẻ neo để bao gồm những gì họ gõ vào. Bạn không thể sử dụng ASP.NET định tuyến cho điều này bởi vì chạy trên máy chủ và bạn cần mã phía khách hàng.

  2. Thực hiện gửi biểu mẫu thay vì liên kết. Đây là cách được khuyến nghị trong HTML. Khi người dùng gửi dữ liệu, nó phải ở dạng. Gói tất cả mọi thứ trong một thẻ biểu mẫu và đặt hộp văn bản và một nút trong đó. Đặt hành động của biểu mẫu thành URL bạn muốn đăng.

Các vấn đề liên quan