【发布时间】:2020-08-04 03:51:09
【问题描述】:
我正在尝试通过 AJAX JQuery 将一些表单数据发布到我的 MVC 控制器,但我收到 400 错误。我正在尝试通过以下方式发布:
var count = $('#MediaList').children().length;
for (var i = 0; i < count; i++) {
$.post('/Submit/MediaAdd',
{ model: $('.AddMedia:nth-child(' + i + ')').find('form').serialize(), count: count }
);
}
信息应该进入这个方法:
[Route("/Submit/MediaAdd")]
[ValidateAntiForgeryToken] //Add media form handler
public IActionResult MediaAdd(Media model, int count)
{
if (ModelState.IsValid)
{
//do stuff to model and count
}
}
最后,这是我的表单的简化版本:
<form name="mediaAdd" method="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 col-5">
<div class="form-group MediaLink">
<label for="FileLink">Link the Media</label>
<input asp-for="Medias.SourceFile" type="url" class="form-control" id="FileLink">
</div>
</div>
</div>
</form>
【问题讨论】:
-
在控制器中使用 [HttpPost] 而非操作
-
我试过了,它不会改变任何东西。顺便说一句,如果我这样做 ``` $.post('/Submit/MediaAdd', $('.AddMedia:nth-child(1)').find('form').serialize());```我可以在
MediaAdd内打断点,但模型完全为空/充满空值。
标签: jquery ajax asp.net-mvc asp.net-core