У меня есть страница, содержащая одну основную форму и несколько меньших повторяющихся форм. Я пытаюсь опубликовать их обе, используя одну кнопку с JQuery, и обрабатывать их в следующем порядке: сначала основная форма, а затем меньшие формы. Однако, когда я пытаюсь получить доступ к меньшим формам, я получаю данные только из последней. Я думал, что лучший способ сделать это - поместить меньшие формы в список, передать его моему обработчику, а затем выполнить foreach l oop по списку. Как мне поместить информацию формы в список, прежде чем мой обработчик ее использует? Вот моя модель:
public class SubmitModel
{
[BindProperty]
public Timelineinfo Timelineinfo { get; set; } //main form
[BindProperty]
public Media Medias { get; set; }//small form
}
Мой контроллер:
[HttpPost]
[Route("/Submit/Submit")]
[ValidateAntiForgeryToken] //Main form handler
public async Task<IActionResult> Submit(SubmitModel model)
{
if (ModelState.IsValid)
{
//Removed for brevity, but
//Fill out some more values in main form then submit main form to Database,
}
return View("Pages/Submit.cshtml", model);
}
[Route("/Submit/MediaAdd")]
[ValidateAntiForgeryToken] //Add media form handler
public async Task<IActionResult> MediaAdd(SubmitModel model)
{
if (ModelState.IsValid)
{
//Removed for brevity, but
//Fill out some more values in small form then submit small form to Database
}
return View("Pages/Submit.cshtml", model);
}
И усеченная версия моей маленькой формы (основная форма похожа, но с Submit
вместо MediaAdd
:
@using (Html.BeginForm("MediaAdd", "Timeline", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="container">
<div class="form-row">
<label asp-for="Medias.Blurb" class="control-label">Blurb<span class="text-danger ml-1">*</span> <span class="text-muted ml-1">Explain what is in the media</span></label>
<input asp-for="Medias.Blurb" class="form-control" />
<span asp-validation-for="Medias.Blurb" class="text-danger"></span>
</div>
<div class="form-row">
<div class="ml-3 col-4">
<label class="form-check-label">Is there any blood or gore in the video?<span class="text-danger ml-1">*</span></label>
<div class="form-check m-2 d-inline">
<input type="radio" asp-for="Medias.Gore" class="form-check-input" value="0">
<label class="form-check-label">No</label>
</div>
<div class="form-check m-2 d-inline">
<input type="radio" asp-for="Medias.Gore" class="form-check-input" value="1" />
<label class="form-check-label">Yes</label>
<span asp-validation-for="Medias.Gore" class="text-danger"></span>
</div>
</div>
</div>
</div>
}
Наконец, как я сейчас отправляю свои формы:
$('#submitButton').click(function () {
$('form').submit();
});