首页 > 后端开发 > C++ > 为什么我的 MVC 模型绑定器无法从表单填充对象列表?

为什么我的 MVC 模型绑定器无法从表单填充对象列表?

Patricia Arquette
发布: 2025-01-21 14:27:11
原创
175 人浏览过

Why is My MVC Model Binder Failing to Populate a List of Objects from a Form?

对对象列表的 MVC 模型绑定问题进行故障排除

本文解决了 MVC 应用程序中的一个常见问题:模型绑定器无法从表单数据正确填充对象列表。 尽管表单提交看似正确,但症状是控制器操作中的空列表。

根本原因:缺少索引

核心问题在于表单元素缺乏索引。 如果没有索引,模型绑定器就无法区分列表中的各个元素。 例如,考虑这种情况:表单最初包含没有唯一标识符的元素。

<code><!-- Incorrect: Missing indices --></code>
登录后复制

解决方案:利用编辑器模板

解决方案涉及使用 EditorTemplates 自动生成正确索引的表单元素。这消除了手动索引并确保正确的模型绑定。

实施步骤:

  1. 创建 EditorTemplates 文件夹: 在 Views 文件夹中创建一个名为“EditorTemplates”的新文件夹。 此文件夹应与其他视图文件位于同一目录中。

  2. 创建强类型视图: 在 EditorTemplates 文件夹中,创建一个名称与您的模型类匹配的强类型视图文件(例如 PlanCompareViewModel.cshtml)。

  3. 迁移部分视图内容:将 HTML 内容从原始部分视图移动到这个新创建的 EditorTemplate 中。

  4. 利用 EditorForModel(): 修改您的父视图以使用 EditorForModel() 辅助方法。 该助手将根据您的模型自动渲染表单元素,并正确索引。

@model IEnumerable<plancompareviewmodel>
@using (Html.BeginForm("ComparePlans", "Plans", FormMethod.Post, new { id = "compareForm" }))
{
    <div>
        @Html.EditorForModel()
    </div>
}
登录后复制

通过采用这种方法,模型绑定器将正确解释并填充控制器操作中的对象列表。 EditorForModel() 帮助器动态地为每个元素生成必要的索引,解决了绑定问题。

以上是为什么我的 MVC 模型绑定器无法从表单填充对象列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板