2009-12-06 20 views
5

Ich habe eine Tabelle, die Produkte auflistet sowie eine Menge Textbox und eine Html.ActionLink anzeigt. Jedes Mengen-Textfeld hat eine eindeutige ID, die von der Produkt-ID abgeleitet ist. Ich denke, das sollte einfach sein, aber ich kann nicht herausfinden, wie der Wert in dem zugehörigen Textfeld an meinen Controller übergeben wird, wenn der Benutzer auf den Link klickt. Mein Code ist unten und jede Hilfe wird geschätzt.Textbox Wert übergeben mit 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> 

Antwort

2

Ich denke, was Sie wollen, ist dies:

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

Werfen Sie einen Blick auf die folgenden Scott Hanselman Blog-Eintrag, um weitere Informationen dazu:

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

See auch dieser Blogpost von Steve Sanderson. Es ermöglicht Ihnen, einzelne Elemente zu bearbeiten:

eine Liste mit variabler Länge der Elemente in ASP.NET MVC bearbeiten
http://blog.codeville.net/2008/12/22/editing-a-variable-length-list-of-items-in-aspnet-mvc/

+0

Sorry, ich denke meine Frage war schlecht formuliert. Ich möchte, dass der Wert, den der Benutzer in das Textfeld schreibt, an meinen Controller übergeben wird, wenn er auf den Link zum Hinzufügen klickt. –

+0

Im Grunde schlägt Ihr ursprünglicher Code vor, an eine Liste gebunden zu sein, aber Ihre Beschreibung Ihrer Anforderung deutet auf die Bindung eines einzelnen Datensatzes hin. –

3

Es gibt keine Möglichkeit, dies in HTML zu tun, so ist es nicht eine Möglichkeit, dies in ASP.NET MVC zu tun.

Es gibt zwei mögliche Lösungen für diese, die Sie wählen können:

  1. verwenden JavaScript, so dass, wenn der Benutzer das Textfeld bearbeitet Sie dynamisch den Wert des Anker-Tag ändern zu schließen, was in sie eingegeben haben. Sie können dafür kein ASP.NET-Routing verwenden, da dies auf dem Server ausgeführt wird und Sie clientseitigen Code benötigen.

  2. Führen Sie eine Formularübergabe anstelle eines Links aus. Dies ist der empfohlene Weg in HTML. Wenn der Benutzer Daten übermittelt, sollte es in einem Formular sein. Wickeln Sie alles in ein Formular-Tag und platzieren Sie das Textfeld und eine Schaltfläche dort. Legen Sie die Aktion des Formulars so fest, dass es sich um die URL handelt, die Sie veröffentlichen möchten.

Verwandte Themen