поэтому у меня есть приложение MVC Asp.net, у которого есть проблемы. По сути, у меня есть представление, которое содержит форму, и ее содержимое привязано к списку объектов. Внутри этого цикла он загружает PartialView, когда элементы зацикливаются. Теперь все работает до подачи формы. Когда он отправляется, контроллер отправляется нулевым списком объектов. Приведенный ниже код демонстрирует проблемы.
Родительский просмотр:
@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>
И это классы для вышеуказанного кода:
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();
}
}
Контроллер:
public class PlansController : MyBaseController
{
[HttpPost]
public ActionResult ComparePlans(IEnumerable<PlanCompareViewModel> model)
{
//the model passed into here is NULL
}
}
И проблема в действии контроллера. Насколько мне известно, он должен публиковать перечислимый список PlanCompareViewModels, но он является нулевым. Когда вы проверяете отправленные данные, они отправляют правильные параметры. И если бы я изменил "IEnumerable" на "FormCollection", он содержит правильные значения. Может ли кто-нибудь понять, почему связующее не создает правильный объект? Я могу обойти это с помощью javascript, но это побеждает цель! Любая помощь будет принята с благодарностью!