2017-02-02 3 views
0

Ich habe viele gemeldete Probleme in Bezug auf dieses Thema gelesen, keine haben das Problem gelöst, das ich habe.MVC POST wird nicht binden Modell ... Ergebnis ist null

Modell:

public class MySoftwareResults 
{ 
    public Shopping_MachineInformation MachineInformation { get; set; } 
    public ShoppingUserInformation UserInformation { get; set; } 
    public List<Shopping_MySoftwareResults> ApplicationsList { get; set; } 
    public string Requester { get; set; } 

    public MySoftwareResults() 
    { 
     MachineInformation = new Shopping_MachineInformation(); 
     UserInformation = new ShoppingUserInformation(); 
     ApplicationsList = new List<Shopping_MySoftwareResults>(); 
     Requester = ""; 
    } 
} 

Form:

@using (@Html.BeginForm("MySoftwareResults", "Client", FormMethod.Post)) 
    { 
     <div class="form-group"> 
      <table class="table table-responsive list-view"> 
       <thead> 
       <tr> 
        <th>Software</th> 
        <th>Cost</th> 
        <th>Requires Approval</th> 
        <th>Status</th> 
        <th>Select</th> 
       </tr> 
       </thead> 
       <tbody> 
       @foreach (var item in Model.ApplicationsList) 
       { 
        <tr> 
         <td> 
          @Html.LabelForModel(item.Software) 
         </td> 
         <td>@Html.LabelForModel(item.Cost)</td> 
         <td> 
          @Html.LabelForModel(item.RequiresApproval) 
         </td> 
         <td>@Html.LabelForModel(item.Status)</td> 
         <td> 
          <input type="checkbox" id="Selected" name="Selected" value="@item.CollectionID"/> 
         </td> 
        </tr> 
       } 
       </tbody> 
      </table> 
     </div> 
     <div class="form-group"> 
      <input type="submit" title="SUBMIT" class="btn btn-primary pull-right" id="butSubmit" /> 
     </div> 
    } 

Das Formular auffüllt perfekt. Wenn ich auf klicken Sie auf Senden das Modell ist leer:

[HttpPost] 
public ActionResult MySoftwareResults(MySoftwareResults results) 
{    
    var selected = axp.euc.sdsassistance.core.Queries.Shopping_ParseCheckedItems(Request.Form["Selected"]);... 
} 

Ich habe versucht, Fiddler, aber ich kann nichts finden die Modelldaten sind Pässe, wenn das Formular geladen zu reflektieren.

Ich bin ratlos.

+0

Es ist ziemlich sicher, dass Sie Ihren Werten das Attribut 'name' geben müssen, bevor Sie sie über Request.Form [] verwenden können. Unsicher, ob dies mit dem integrierten Html.LabelForModel funktioniert. – Laurens

+0

Denke nicht, dass es das ist. Ursprünglich habe ich ein Problem mit Checkboxen gelöst. Ich habe das herausgefunden und das Request.Form [] enthält diese Daten. In diesem Beispiel habe ich gebaut, um das Checkbox-Problem das Modell zu lösen, das an den Post gebunden ist. Aber in meiner Anwendung ist es nicht. – Edmound

+0

Ihre HTML-Generierung, die keine Beziehung zu Ihrem Modell hat. Die einzige Eingabe, die Sie generieren, hat 'name =" Selected "' und das würde nur an 'public ActionResult MySoftwareResults (bool [] selected) 'binden, was nutzlos wäre. Lesen Sie [diese Antwort] (http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943), um zu verstehen, wie Sie an Sammlungen binden. Und Formulare senden nur die Name/Wert-Paare der erfolgreichen Steuerelemente zurück ('', '