2016-12-06 1 views
0

Ich dachte, das wäre viel einfacher als es gewesen wäre. Ich muss Daten aus einer Zelle in meiner Datentabelle extrahieren (was ich tun kann) und sie dann über ein Formular mit einem versteckten Feld übermitteln, um die Variable an eine Aktion in meinem Controller zu übergeben.Parsing Daten von Datat Zelle zu Controller mit JQuery, Nullwert

Ich mache etwas ähnliches zu diesem früheren in meinem Code mit der Ausnahme der Generierung des Formulars.

Ich habe verschiedene Methoden ausprobiert und egal was passiert, wenn ich auf die Sammlung in meiner Aktion zugreifen, ist der Wert null. Wenn ich jedoch während der JQuery mit einem Popup teste, ist der Wert nicht null.

Also ich glaube, das Problem ist entweder mit dem Parsen oder mit dem Lesen in meinem Controller. Allerdings mache ich das gleiche an anderer Stelle in einem anderen Controller, also glaube ich, dass es das Parsing ist.

My-View-Funktion:

$('#myTable').on('click', 'td', function() { 
      var serial = table.cell(this).data(); 


      var form = $('<form action="@Url.Action("status")" id="hiddenform"><input type="hidden" id="serial" name="serial" value=""></form>').appendTo('body'); 
      $('#serial').val(serial); 
      form.submit(); 


     }); 

und mein Controller ich bin Parsen:

//Accept GET and POST 
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)] 
public ActionResult Status(System.Web.Mvc.FormCollection collection) 
{ 
    string serial = collection["serial"]; 

    if (serial == null || serial == "") 
     System.Windows.Forms.MessageBox.Show("Error: Serial is NULL"); 

    return View(serial); 
} 

Um ehrlich zu sein, ich habe meinen Code viel in einem Versuch, schlachtete dies zu beheben, so sieht es ziemlich furchtbar.

Jede Hilfe wäre willkommen.

Ich erhalte den Fehler: Serial ist NULL Popup jedes Mal in meinem Controller. Wenn ich den JQuery jedoch teste, ist der Wert nicht null und gibt den richtigen Wert zurück.

Antwort

1

Haben Sie versucht, die Methodensignatur folgendermaßen zu ändern?

public ActionResult Status(string serial) 

wo serial wird der Parametername, die Sie aus dem HTML-Formular übergeben werden.

Wenn der Parametername blah in HTML ist, können Sie Ihre Methodensignatur unten ändern müssen:

public ActionResult Status(string blah) 
+0

Thank you! Um ehrlich zu sein habe ich versucht, etwas Ähnliches vorher zu tun, aber etwas anderes in meinem Code zu der Zeit muss es von der Arbeit gestoppt haben. –

+0

Ich habe die gleiche Frage (so ziemlich) hier öffnen: http://StackOverflow.com/Questions/40987658/generating-form-with-hidden-input-and-submitting-to-an-action wenn Sie dort antworten Ich werde dir auch die Antwort geben! –