我正在将 ASP.NET 5 应用程序迁移到 ASP.NET Core。除了无法提交表格外,一切都很顺利。
当我这样做时,查看 Chrome 的网络时间轴,到达 Controller URL (/MyController/Create) 但没有任何反应(浏览器处于空闲状态,正在等待)。
在寻找一些解释后:尝试调用无参数 Controller 工作正常。添加 [FromForm] 返回 415。[FromData] 也空闲...
我在互联网上找不到任何东西。这里也! (这是我一生中的第一次)。
注意:使用 ASP.NET 5 MVC 6 一切正常。两边的代码相同。
这是我的 Controller 代码:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(SocieteGroupe societeGroupe)
{
if (ModelState.IsValid)
{
_context.SocieteGroupe.Add(societeGroupe);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
ViewData["Id_Devise"] = new SelectList(_context.Devise, "Id", "Code_ISO", societeGroupe.Id_Devise);
return View(PackageUtils.GetViewPath(viewPath, OperationType.CREATE), societeGroupe);
}
我的观点:
<form asp-controller="SocieteGroupes" asp-action="Create">
<div class="form-horizontal">
<h4>SocieteGroupe</h4>
<hr />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Id_Devise" class="col-md-2 control-label"></label>
<div class="col-md-10">
<select asp-for="Id_Devise" class ="form-control" asp-items="ViewBag.Id_Devise"></select>
</div>
</div>
<div class="form-group">
<label asp-for="Id_Salesforce" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="Id_Salesforce" class="form-control" />
<span asp-validation-for="Id_Salesforce" class="text-danger" />
</div>
</div>
<div class="form-group">
<label asp-for="Nom" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="Nom" class="form-control" />
<span asp-validation-for="Nom" class="text-danger" />
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
是否有人已经面对过这个问题或对此有所了解?
编辑:
而不是使用复杂类型作为参数。我尝试(出于调试目的)改用字符串并以 Json 格式返回字符串以便对其进行调试。无论我使用什么(无,[FromForm]、[FromBody]...),结果都是空的。我不知道下一步该怎么做。任何帮助将不胜感激:D
提前致谢:)
最佳答案
我找到了解决方法。这是 RC2 的一个已知错误。
根据这个link , 你需要下载这个file并将其放在项目中的任何位置。然后您只需要在 Startup.cs 中添加行 services.AddSingleton<IModelBinderFactory, MyModelBinderFactory>();
仅此而已!对我来说,它有效 :D
关于c# - 表单提交没有数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37485123/