2009-12-06 33 views
5

Mam tabelę, która zawiera listę produktów, a także wyświetla pole tekstowe o wielkości i plik Html.ActionLink. Każda wielkość pola tekstowego ma unikalny identyfikator wywodzący się z identyfikatora produktu. Myślę, że to powinno być proste, ale nie mogę się dowiedzieć, jak uzyskać wartość w powiązanym polu tekstowym przekazanym do kontrolera, gdy użytkownik kliknie łącze. Mój kod jest poniżej i każda pomoc jest doceniana.Przekazywanie wartości pola tekstowego przy użyciu pliku 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> 

Odpowiedz

2

myślę, co chcesz to:

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

Zapraszamy do obejrzenia poniższego Scott Hanselman blogu więcej szczegółów na ten temat:

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

See także ten post na blogu Steve'a Sandersona. Pozwoli to, aby edytować pojedyncze elementy:

edytowania listy o zmiennej długości elementów w ASP.NET MVC
http://blog.codeville.net/2008/12/22/editing-a-variable-length-list-of-items-in-aspnet-mvc/

+0

Przepraszam, myślę, że moje pytanie było źle sformułowane. Chcę, aby dowolna wartość, jaką użytkownik wstawił w polu tekstowym, została przesłana do kontrolera po kliknięciu linku dodawania. –

+0

Zasadniczo Twój oryginalny kod sugeruje powiązanie z listą, ale Twój opis wymagań sugeruje powiązanie pojedynczego rekordu. –

3

Nie ma sposobu, aby to zrobić w HTML, a zatem nie ma sposób to zrobić w ASP.NET MVC.

Istnieją dwa możliwe rozwiązania to, że można wybierać spośród:

  1. Wykorzystanie JavaScript tak, że gdy użytkownik edytuje pole tekstowe dynamicznie zmieniać wartość znacznika zakotwiczenia zawierać co one wpisane. Nie można używać do tego routingu ASP.NET, ponieważ działa on na serwerze i potrzebny jest kod po stronie klienta.

  2. Wyślij formularz zamiast linku. Jest to zalecany sposób w HTML. Kiedy użytkownik przesyła dane, powinien być w formie. Zawiń wszystko w tag formularza i umieść tam pole tekstowe i przycisk. Ustaw działanie formularza jako URL, na który chcesz publikować.

Powiązane problemy