I don't appear to be having the same issues as most with the implementation of BeginCollectionItem with MVC core, I'm not receiving any of the data.
I have this main page that has alot of work on it but here is the javascript that adds new sections to the page and the partial that will be added below.
@model QuizBuilderModel
...
function addSection() {
$.ajax({
url: '@Url.Action("AddSection","Quiz")',
cache: false,
success: function (html) {
$("#sortable-survey").append(html);
}
});
}
...
<div class="quiz-builder" id="quiz-builder" style="@((Model.Quiz == null || string.IsNullOrEmpty(Model.Quiz.Id))? "display: none;" : "")">
@{await Html.RenderPartialAsync("~/Views/Admin/Quiz/_QuizBuilder.cshtml", Model);}
</div>
Now, we have this partial to start the form we're building.
@model QuizBuilderModel
<div id="sortable-survey" class="sortable-survey">
@using (Html.BeginForm("PostQuizUpdate", "Quiz", FormMethod.Post))
{
@if (Model.Quiz != null && !string.IsNullOrEmpty(Model.Quiz.Id))
{
<input type="submit" class="btn btn-lg btn-outline-primary top-right-button top-right-button-single" id="SaveQuizModal" name="SaveQuizModal" value="Save Quiz" />
}
@if (Model.Quiz != null && Model.Quiz.Sections != null)
{
foreach (Sections section in Model.Quiz.Sections)
{
await Html.RenderPartialAsync("~/Views/Admin/Quiz/_Section.cshtml", Model);
}
}
}
</div>
<div>
<div class="text-center">
<button type="button" class="btn btn-outline-primary btn-sm my-5" id="AddSection" onclick="addSection();">
<i class="simple-icon-plus btn-group-icon"></i>
Add Section
</button>
</div>
</div>
Then I have this partial section where we'll be adding more and more to it.
@using HtmlHelpers.BeginCollectionItemCore
@model Sections
@using (Html.BeginCollectionItem("Sections"))
{
<div class="form-group">
@Html.LabelFor(x => x.Title);
@Html.EditorFor(m => m.Title, new { @class = "form-control" })
</div>
<div class="form-group">
<label>SubTitle (optional)</label>
@Html.EditorFor(m => m.SubTitle, new { @class = "form-control" })
</div>
<div class="form-group">
<label>Instructions (optional)</label>
<textarea type="text" class="form-control" placeholder="" id="Instructions" name="Instructions" required rows="10" cols="50"></textarea>
</div>
}
The response of the post is sent here...
[HttpPost]
public async Task<IActionResult> PostQuizUpdate(IEnumerable<Sections> Sections)
{
...
}
Like i said before when I hit the submit I'm not getting the list of Sections in the post.