Почему я получаю частичное представление данных, является нулевым в действии post контроллера для основного вида? - PullRequest
0 голосов
/ 13 сентября 2018

Почему я получаю данные частичного просмотра = null в записи действия контроллера основного вида?

Моя модель:

 public class WorkTimeRegulationViewModel
    {
        public Guid Id { get;  set; }
        public string Name { get;  set; }
        public byte NumberOfAvailableRotations { get;  set; }
        public IEnumerable<WorkTimeViewModel> AssignedWorkTimes { get; set; }
        public IEnumerable<AllocationViewModel> EnroledParties { get; set; }

    }

Мой основной вид:

@model TimeAndAttendance.web.ViewModels.WorkTimeRegulationViewModel
@{
    ViewBag.Title = "WorkTimeRegulationForm";
    Layout = "~/Views/Shared/_LayoutAR.cshtml";
}

<h4>TEST</h4>

@using (Html.BeginForm("Save", "WorkTimeRegulation"))
{

   // IEnumerable<TimeAndAttendance.web.ViewModels.WorkTimeViewModel> WorkTimeViewModel = Model.
    <div class="form-group">
        @Html.LabelFor(m => m.Name)
        @Html.TextBoxFor(m => m.Name, new { @class = "form-control" })
        @Html.ValidationMessageFor(m => m.Name)
    </div>

    <div class="form-group">
        @Html.LabelFor(m => m.NumberOfAvailableRotations)
        @Html.Label("")
    </div>

    @Html.Partial("_WorkTime",Model.AssignedWorkTimes.ToList())
    <div>

    </div>

    @Html.HiddenFor(m => m.Id)
    // @Html.AntiForgeryToken()
    <button type="submit" class="btn btn-primary">ٍSave</button>
}

Мой частичный вид:

@model IEnumerable<TimeAndAttendance.web.ViewModels.WorkTimeViewModel>

@(Html.Kendo().Grid(Model)
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.Name);
        columns.Bound(p => p.NumberOfWorkHours).Width(120);
        columns.Bound(p => p.NumberOfShortDays).Width(120);
        columns.Command(command => { command.Edit(); command.Destroy(); }).Width(500);
    })
    .ToolBar(toolbar => toolbar.Create()

    .Editable(editable => editable.Mode(GridEditMode.InLine).ConfirmDelete("test").DisplayDeleteConfirmation("Test"))
    //   .HtmlAttributes(new { style = "height:550px;" })
    .Sortable()

    .DataSource(dataSource => dataSource
        .Ajax()
        .Events(events => events.Error("error_handler"))
        .Model(model => model.Id(p => p.Id))
        .Create(update => update.Action("EditingInline_Create", "WorkTimeRegulation"))
        .Read(read => read.Action("EditingInline_Read", "WorkTimeRegulation"))
        .Update(update => update.Action("EditingInline_Update", "WorkTimeRegulation"))
        .Destroy(update => update.Action("EditingInline_Destroy", "WorkTimeRegulation"))
    )
)

Мой контроллер для основного вида:

 public ActionResult Save(WorkTimeRegulationViewModel x)
        {
            x.AssignedWorkTimes = null; //Why 
            return View();
        }

Через firebug: Сетка в режиме редактирования:

<input class="k-textbox valid" id="Name" name="Name" data-bind="value:Name" aria-invalid="false">

После того, как я использую префикс:

@Html.Partial("_WorkTime", Model.AssignedWorkTimes,
    new ViewDataDictionary { TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "AssignedWorkTimes" } })

Я получаю следующее:

<input class="k-textbox" id="AssignedWorkTimes_Name" name="AssignedWorkTimes.Name" data-bind="value:AssignedWorkTimes.Name">

но коллекция по-прежнему нулевая!

Примечание: у меня нет контроллера для частичного просмотра.

Не знаю почему x.AssignedWorkTimes = null

...