c# - ASP.NET Core 3.1 绑定到列表(通用列表)属性不起作用
问题描述
我正在尝试在 ASP.NET Core 3.1 下的 NopCommerce 内部实现一个控制器方法,如下所示:
[HttpPost]
[Route("CustomerSchool/Update")]
public IActionResult Update(CustomerSchoolMappingModel model)
{
}
我的模型如下所示:
public class CustomerSchoolMappingModel : BaseNopModel
{
public int CustomerId { get; set; }
public List<int> SchoolIds { get; set; } = new List<int>();
}
当我提交带有以下表单数据的 http POST 时:
CustomerId: 1
SchoolIds[0]: 2
SchoolIds[1]: 3
我的属性已成功绑定,但不是始终返回空的 SchoolIds 属性集合。
我怀疑 NopCommerce 已经替换了默认的模型绑定器(我相信在 ASP.NET 中默认支持此功能),但我不是 100% 确定如何正确替换/实现此功能。
我相信使用自定义IModelBinderProvider
来解决这个问题是可行的,但我想知道解决这个问题的正确/最佳方法是什么,并确保我可以name[x] form schema
在我的 ASP.NET Core 应用程序中使用正确绑定通用列表?
解决方案
因此,对于任何感兴趣的人来说,这似乎归结为 Nop 不喜欢使用通用列表。
我从这里查看了 Nop 使用的默认绑定器,我能够通过将模型更改为此成功地解决我的问题:
public class CustomerSchoolMappingModel : BaseNopModel
{
public int CustomerId { get; set; }
public ICollection<int> SchoolIds { get; set; } = new List<int>();
}
推荐阅读
- amazon-web-services - 如何从 Redshift 中的 Json 中提取项目值
- eclipse - 如何在 eclipse.ini 中引用 JVM 变量
- c++ - 唯一指针和 3 规则
- forms - 在 symfony 4 中动态访问表单数据
- python - 处理pytorch代码时如何利用所有GPU?
- java - Geotools 计算所需的两个几何图形之间的相交面积
- python - 数据集字符串用线程代替不加速
- python - 如何使用pyqt5和python将所有项目附加到一个列表中
- join - Pyspark 只保留不同的(删除所有重复项)
- sql - 如何根据存储过程中的 if else 条件将部分附加到查询