Das Senden des Formulars im MVC 4-Modell ist in der Controller-Post-Methode null

8

Also mein Problem ist jetzt, dass ich mein Modell nicht in meinen Controller bekommen kann, wenn ich dieses Formular einreiche. Ich versuche, die Elemente aus den BillingCodes (eine Liste von BillingCodeObjects) durchlaufen zu lassen und anzuzeigen. Ich habe etwas Code von diesen entfernt, der für die Situation nicht wirklich relevant ist, um es kürzer und einfacher zu lesen.

Hier ist der Code für meine Ansicht ...

%Vor%

Und hier ist ein Code für meinen Controller:

%Vor%

Und schließlich, hier ist die Info, die im Modell ist:

%Vor%

Hier ist ein Bild der Debug-Locals, wenn das Formular zurückgegeben wird ..

Bild von Einheimischen

    
Brandon Knight 14.08.2013, 15:25
quelle

3 Antworten

6

Sie machen eine foreach für die Ansichten, also sollten die Eingabeelemente die Werte irgendwo wie folgt haben: name="BillingCodes[0].EnterTimeHours" , name="BillingCodes[0].EnterTimeMinutes" Sie können die Anfrage in den Chrome Developer Tools (STRG + UMSCHALT + C) auf der Registerkarte "Netzwerk" überprüfen oder einfach nur die Quelle anzeigen. Wenn dies der Fall ist, übermitteln Sie mehrere BillingCodeObj-Objekte. Sie müssen einen Controller haben, der das empfängt.

Sehen Sie sich den Quellcode an, da er Ihnen dabei helfen kann zu verstehen, was hinter den Kulissen passiert.

Versuchen Sie dies auf Ihrem Controller:

%Vor%

Sie können auch (zu Debuggingzwecken)

machen %Vor%

und überprüfen Sie das Formular, wie in Debug debuggt wird.

nach Kommentaren und mehr Code zur Verfügung gestellt ändere deine Ansicht zu:

%Vor%

Erstellen Sie einen neuen cshtml in EditorTemplates / BillingCodeObj.cshtml:

%Vor%     
Bart Calixto 14.08.2013, 15:48
quelle
0

Ihre Ansicht ist ein Typ von BillingCodeList , aber Sie versuchen, List<BillingCodeObj> an Ihre Aktion im Controller zu senden.

Versuchen Sie, die Aktion wie folgt zu ändern:

%Vor%     
Andriy Gubal 14.08.2013 15:31
quelle
0

edit: Es scheint nicht, dass Sie das Listenelement Ihrer BillingCodeList auf ein new List<BillingCode>() initialisieren, bevor Sie das Modell an die Ansicht senden. Oder bist du?

    
Rob G 14.08.2013 15:47
quelle