Formularz MVC nie może wysyłać listy obiektów

więc mam aplikację MVC Asp.net, która ma problemy. Zasadniczo mam widok, który zawiera formularz, a jego zawartość jest powiązana z listą obiektów. W tej pętli ładuje PartialView, gdy elementy są zapętlone. Teraz wszystko działa do momentu przesłania formularza. Po przesłaniu kontroler otrzymuje pustą listę obiektów. Poniższy kod demonstruje problemy.

Widok rodzica:

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

_częściowy widok:

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

A oto klasy dla powyższego kodu:

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();
    }
}

Kontroler:

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

Problem tkwi w działaniu kontrolera. O ile mi wiadomo, powinna ona zawierać wyliczalną listę PlanCompareViewModels, ale jest ona pusta. Podczas sprawdzania wysyłanych danych pocztowych wysyła prawidłowe parametry. A gdybym miał zmienić „IEnumerable” na „FormCollection”, zawiera poprawne wartości. Czy ktoś może zobaczyć, dlaczego spoiwo nie tworzy właściwego obiektu? Mogę obejść to za pomocą javascript, ale to pokonuje cel! Każda pomoc byłaby bardzo mile widziana!

questionAnswers(2)

yourAnswerToTheQuestion