C# ASP.NET Core 无法绑定(bind)到类型为 'Microsoft.AspNetCore.Http.FormCollection' 的模型

标签 c# asp.net-core-mvc model-binding formcollection

我收到以下错误 处理请求时发生未处理的异常。 InvalidOperationException:“Microsoft.AspNetCore.Mvc.ModelBinding.Binders.FormCollectionModelBinder”无法绑定(bind)到“Microsoft.AspNetCore.Http.FormCollection”类型的模型。将模型类型更改为“Microsoft.AspNetCore.Http.IFormCollection”。

这是我使用以下代码的时候:

[ValidateAntiForgeryToken]
[HttpPost]
public IActionResult Index(Test test, FormCollection formCollection)
{        
    var feesAmountArray = new List<string>();

    foreach (var item in formCollection.Keys.Where(k => k.StartsWith("FeesAmount-")))
    {
        feesAmountArray.Add(formCollection[item].ToString().TrimEnd(','));
    }

    var feesAmount = string.Join(",", feesAmountArray);

    if (ModelState.IsValid)
    {
    }

    return View(test);
}

在模型 Test 中,我正在使用 [Decimal] 属性,该属性与 ModelBinder 一起使用,但我不想无论如何绑定(bind)到表单,我只想绑定(bind)到模型,所以我有点困惑为什么会出现这条消息。

ModelBinder 相关代码可以在:

C# ASP.NET Core ModelBinder not Updating Model

任何帮助将不胜感激:-)

最佳答案

两种选择:

  1. 将参数更改为 IFormCollection
  2. 删除它并改为通过 HttpContext.Form 访问它

关于C# ASP.NET Core 无法绑定(bind)到类型为 'Microsoft.AspNetCore.Http.FormCollection' 的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46070586/

相关文章:

c# - 给定一个日期范围列表,我如何验证该列表中是否涵​​盖了日期范围内的所有日期?

c# - 在 Unity 中创建能力对象

c# - 如何在Asp.net core中将 View 数据传递给部分 View ?

asp.net-mvc - 如何将 URL 参数绑定(bind)到具有不同名称的模型属性

asp.net-mvc - 在 MVC 3 中,如何使默认模型绑定(bind)器将空字符串视为 "Empty"而不是 "NULL"?

c# - GridView 问题

c# - 使用 SqlBulkCopy 时如何检索服务器生成的标识值

c# - ApiController 并不总是在 BadRequest 中返回数据

asp.net-core - .NET Core (ASP MVC) 在构建后运行

asp.net-mvc - ASP.NET MVC - 复杂模型验证