2011-01-05 4 views
2

Ich versuche, auf die Werte zuzugreifen, die ein Benutzer in eine Tabelle von meinem Controller einführt.Werte vom HTML zum Controller holen

Diese Tabelle ist nicht Teil des Modells und die Ansicht Quellcode ist so etwas wie:

<table id="tableSeriales" summary="Seriales" class="servicesT" cellspacing="0" style="width: 100%"> 
    <tr> 
     <td class="servHd">Seriales</td> 
    </tr> 
    <tr id="t0"> 
     <td class="servBodL"> 
      <input id="0" type="text" value="1234" onkeypress = "return handleKeyPress(event, this.id);"/> 
      <input id="1" type="text" value="578" onkeypress = "return handleKeyPress(event, this.id);"/> 
      . 
      . 
      . 
     </td> 
    </tr> 
</table> 

Wie kann ich diese Werte (1234, 578) von der Steuerung erhalten?

ein Formcollection Empfangen funktioniert nicht, da es nicht auf den Tisch bekommt ...

Danke.

+2

Die Form Sammlung der Eingangssteuerempfangswerte werden sollte, könnten Sie ein Problem haben mit Zahlen für IDs. Versuchen Sie es mit id = "control1" usw. – Lazarus

Antwort

0

die FormCollection verwenden sollte funktionieren, wenn Sie Ihre Tabelle nicht innerhalb eines <form> Tag ist


Oben Lazarus Kommentar, können Sie dies versuchen, aber Sie haben die name Attribut für jeden setzen:

<input id="seriales[0]" name="seriales[0]" type="text" value="1234" onkeypress="return handleKeyPress(event, this.id);"/> 
<input id="seriales[1]" name="seriales[1]" type="text" value="578" onkeypress="return handleKeyPress(event, this.id);"/> 

Jetzt in Ihrem Aktions Methode Sie Ihre Methode wie folgt aussehen kann:

[HttpPost] 
public ActionResult MyMethod(IList<int> seriales) 
{ 
    // seriales.Count() == 2 
    // seriales[0] == 1234 
    // seriales[1] == 578 
    return View(); 
} 

und seriales werden mit diesen Werten verdrahtet.

0

Erste Option: Die Verwendung von FormCollection ist der einfachste Weg, um auf dynamische Daten zuzugreifen. Es ist seltsam, dass Sie diese Werte nicht bekommen können, können Sie das folgende überprüfen?

  1. Ist die Tabelle innerhalb des Elements ?
  2. Können Sie den Eingabeelementen das Namensattribut hinzufügen? Beachten Sie, dass Formularelemente an ihren Namen gebunden sind, nicht ID.

Zweite Option: Die zweite Option ist eine Sammlung in Ihrem Modell hinzuzufügen, und benennen Sie alles entsprechend. das heißt

public class MyModel 
{ 
    ... 
    public IList<string> MyTableItems { get; set; } 
} 

und in der folgenden Namen verwenden Ansicht:

<input name="MyTableItems[]" value="" />