MVC Form kann keine Liste von Objekten veröffentlichen

so, ich habe eine MVC Asp.net app, die Probleme hat. Im wesentlichen habe ich eine Ansicht, die ein Formular enthält, und dessen Inhalt sind gebunden, um eine Liste von Objekten. Innerhalb dieser Schleife, lädt PartialView mit der die Elemente geloopt über. Jetzt funktioniert alles, bis auf die submittion der form. Wenn es vorgelegt wird, der controller wird geschickt eine null-Liste von Objekten. Der code unten demonstates die Probleme.

Übergeordneten Ansicht:

@model IEnumerable<PlanCompareViewModel>
@using (Html.BeginForm("ComparePlans", "Plans", FormMethod.Post, new { id = "compareForm" }))
{
<div>
    @foreach (var planVM in Model)
    {
        @Html.Partial("_partialView", planVM)
    }
</div>
}

_partialView:

@model PlanCompareViewModel
<div>
    @Html.HiddenFor(p => p.PlanID)
    @Html.HiddenFor(p => p.CurrentPlan)
    @Html.CheckBoxFor(p => p.ShouldCompare)
   <input type="submit" value="Compare"/>
</div>

, Und diese sind die Klassen für den obigen code:

PlanViewModel:

public class PlansCompareViewModel
{

    public int PlanID { get; set; }
    public Plan CurrentPlan { get; set; }
    public bool ShouldCompare { get; set; }
    public PlansCompareViewModel(Plan plan)
    {
        ShouldCompare = false;
        PlanID = plan.PlanId;
        CurrentPlan = plan;
    }

    public PlansCompareViewModel()
    {
        //TODO: Complete member initialization
    }
    public static IEnumerable<PlansCompareViewModel> CreatePlansVM(IEnumerable<Plan> plans)
    {
        return plans.Select(p => new PlansCompareViewModel(p)).AsEnumerable();
    }
}

Controller:

public class PlansController : MyBaseController
{
    [HttpPost]
    public ActionResult ComparePlans(IEnumerable<PlanCompareViewModel> model)
    {
         //the model passed into here is NULL
    }
}

Ist das problem in der controller-action. Soweit ich informiert bin, sollte sein posting eine aufzählbare Liste von PlanCompareViewModels, aber es ist null. Wenn Sie in inspect die post-Daten gesendet werden, es ist das senden der richtigen Parameter. Und wenn ich zu ändern 'IEnumerable' zu 'FormCollection', es enthält die richtigen Werte. Kann jemand sehen, warum das Bindemittel ist nicht das richtige Objekt? Ich kann um diese mit Hilfe von javascript, sondern dass Niederlagen der Zweck! Jede Hilfe wäre sehr geschätzt werden!

InformationsquelleAutor der Frage Sonoilmedico | 2013-11-13

Schreibe einen Kommentar