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.
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
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
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 ('', '