Передача объекта со списком из представления в контроллер. Список не отображается / - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть два объекта, которые я передаю в View, а затем обратно в контроллер.

public class Category1Dictionary
{
    public int Id { get; set; }
    public IList<Category2Dictionary> SubCategories {get; set;}
    public string UserName { get; set; }
}

public class Category2Dictionary
{
    public int Id { get; set; }
    public string Category2Item { get; set; }
}

Мой взгляд выглядит так:

@model Budget.Models.Category1Dictionary
@{
    ViewBag.Title = "Edit";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm())
{
<div class="form-horizontal">
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    @Html.HiddenFor(m => m.Id)
    @Html.HiddenFor(m => m.UserName)
    @Html.HiddenFor(m => m.SubCategories)


    @Html.LabelFor(m => m.Category1Item, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="form-group">

    <div class="col-md-10">
        @Html.EditorFor(m => m.Category1Item, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(m => m.Category1Item, "", new { @class = "text-danger" })
    </div>
    @for (int i = 0; i < Model.SubCategories.Count; i++)
    {
        <div class="col-md-10" style="padding-left:40px">
            @Html.EditorFor(m => m.SubCategories[i].Category2Item, new { htmlAttributes = new { @class = "form-control" } })
            @Html.HiddenFor(m => m.SubCategories[i].Id, new { htmlAttributes = new { @class = "form-control" } })
        </div>
    }
</div>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Save" class="btn btn-default" />
        </div>
    </div>
</div>
}

И действие в контроллере:

[HttpPost]
public ActionResult Edit(Category1Dictionary category1Dictionary)
{
   return View(category1Dictionary);
}

С этим макетом в действии я получаю объект Category1Dictionary со всеми элементами, но SubCategories равен NULL. Я видел несколько похожих постов, но я потратил всего 6 часов на это и все еще могу заставить его работать ...

Метод получения:

public ActionResult Edit(int? id)
{
   if (id == null)
   {
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
   }
Category1Dictionary category1Dictionary = db.Category1Dictionaries.Include(p=>p.SubCategories).First(c=>c.Id == id);

if (category1Dictionary == null)
  {
     return HttpNotFound();
  }
return View(category1Dictionary);
}

РЕДАКТИРОВАТЬ: поле ввода, сгенерированное EditorFor enter image description here

Сообщение от скрипача: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...