【发布时间】:2020-08-02 04:53:27
【问题描述】:
我的页面包含一个主表单和多个较小的重复表单。我正在尝试使用带有 JQuery 的一个按钮来发布它们,并按以下顺序处理它们:首先是主表单,然后是较小的表单。但是,当我尝试访问较小的表单时,我只从最后一个表单中获取数据。我在想最好的方法是将较小的表单放入列表中,将其传递给我的处理程序,然后在列表中执行 foreach 循环。在我的处理程序使用它之前,我如何将表单信息放入列表中? 这是我的模型:
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();
});
【问题讨论】:
-
为什么要提交jquery?您可以通过表单的提交按钮来完成。是的,在一个模型中组合表单数据是正确的方法。现在有什么问题吗?
-
我想通过单击一个提交按钮将它们一起提交,据我所知,这是这样做的方法
-
你把提交按钮放在哪里了?对于通过
Html.BeginForm提交的表单,以下链接会有所帮助aspsnippets.com/Articles/… -
抱歉,我真的看不出那个链接有什么帮助,表单都在提交,但是因为它们不在列表中,所以小表单会相互覆盖。
标签: c# jquery asp.net-mvc asp.net-core