在ASP.NET Core MVC中,使用foreach循环来动态生成表单元素是非常常见的做法。然而,有时候在表单提交后,发现表单中from foreach循环中动态生成的input元素的值无法被正确的绑定到对应的模型属性上。
这个问题的根本原因在于表单中生成的input元素的name属性没有加上一个有着固定值的前缀,因此绑定模型时ASP.NET Core MVC无法准确找到对应的属性。为了解决这个问题,我们需要为input元素的name属性手动添加上前缀,以确保模型绑定时能够正确的找到对应的属性。
下面是一个示例代码,演示了如何为表单中的input元素添加前缀,以确保能够正确的绑定到模型属性上。
首先,我们需要在View中使用HtmlHelper扩展方法来生成表单元素。然后把每个input元素的name属性添加上我们想要的前缀。代码如下:
@model IEnumerable-
在这个示例中,我们使用了@item.Id作为前缀,并在每个属性的名字后面加上了属性名(例如 Name或者Description)。这样表单中生成的input元素的name属性就变成了 prefix_1__Name,prefix_1__Description