MVC2 RTM - 使用实体框架模型绑定复杂对象

2023-12-01

我是 MVC 新手,并且真的很挣扎于我认为这应该是一个非常常见的场景。我正在使用 MVC2 RTM 和模型对象的实体框架。

我正在做的工作:

包含子对象集合的父对象的编辑视图。该表单显示父对象的所有可编辑字段,并迭代并显示所有关联子对象的所有可编辑字段(在同一视图中)。我能够成功处理控制器中的编辑操作,但当我尝试将表单集合中的值绑定到 EF 模型对象时遇到问题。

问题:

在我的控制器函数中,当我调用 TryUpdateModel 并传递父对象时,出现以下错误:

“EntityCollection 已初始化。仅应在对象图反序列化期间调用 InitializeRelatedCollection 方法来初始化新的 EntityCollection。”

我看过很多其他人的帖子,都遇到过类似的问题,但还没有找到解决方案。如果不构建自定义模型绑定程序,这是否不可能?如果有人有一个有效的例子,我将不胜感激。由于某种原因,我能够迭代子集合并在子对象上成功执行 TryUpdateModel,但是当我在父对象上调用它时,会引发上述错误。理想情况下,我想为父级调用一次,并从表单更新整个对象树。

这是控制器代码:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection formValues)
        {
            EFEntities ef = new EFEntities();
            ParentObject parent = ef.ParentObjects.SingleOrDefault(p => p.ID == id);

            if (ModelState.IsValid)
            {
                int i = 0;
                foreach (child in parent.ChildObjects)
                {
                    //this works fine
                    TryUpdateModel(child, "ChildObjects[" + i + "]"); 
                    i++;
                }

                //this blows up
                if (TryUpdateModel(parent)) 
                {                    
                    ef.SaveChanges();
                    return RedirectToAction("Details", new { id = parent.ID });
                }
            }
            return View(parent);
        }

感谢您提出这个问题,尽管没有得到回答,但它给了我答案。我能找到的最好的事情就是(使用你的例子):

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection formValues)
        {
            EFEntities ef = new EFEntities();
            ParentObject parent = ef.ParentObjects.SingleOrDefault(p => p.ID == id);

            if (ModelState.IsValid)
            {
                int i = 0;
                foreach (child in parent.ChildObjects)
                {
                    //this works fine
                    TryUpdateModel(child, "ChildObjects[" + i + "]"); 
                    i++;
                }

                //exclude the collections and it won't blow up...
                if (TryUpdateModel(parent, "Parent", null, new string[] {"ChildObjects"})) 
                {                    
                    ef.SaveChanges();
                    return RedirectToAction("Details", new { id = parent.ID });
                }
            }
            return View(parent);
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC2 RTM - 使用实体框架模型绑定复杂对象 的相关文章

  • 将多对多关系与实体框架中的属性映射

    我总是使用属性将实体的属性映射到相应的列 这是一个例子 Table news entries public class News Key public int Id get set Column d date public DateTime
  • 我们可以使用枚举作为类型安全的实体 ID 吗?

    我们正在 EF 6 1 代码优先设置中使用一个相当大的模型 并且我们使用整数作为实体 id 不幸的是 这并不像我们希望的那样类型安全 因为人们很容易混淆 id 例如比较不同类型的实体的 id myblog Id somePost Id 或类
  • 延迟加载实体框架 v.1 中昂贵的字段

    在网上搜寻并认为我能找到解决方案后 我似乎又碰上了另一堵砖墙 我的数据库中有一个表 照片 包含 PhotoID 标题 排序和四组二进制数据的列 原始 大 中和小 是的 它基于旧的 ASP NET 入门工具包 并进行了各种修复等 我正在从 L
  • SaveChangesAsync 不更新数据库表中的值

    这是我的桌子 统计数据 Id Depth RefreshCounter 样本记录 Id Depth RefreshCounter 1 1 1 2 1 0 3 1 0 4 1 0 现在我需要做的是 每当我刷新页面时 我需要在深度为 1 的数据
  • 具有自定义格式的 C# Generic DateTime.ToString() [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 使用时 DateTime ToString Contains 2016 实体框架产生 CAST DateValue AS nvarchar
  • 实体框架与oracle数据库的连接

    我使用的是 Entity Framework 6 1 版本和 oracle 11 我是实体框架的新手 任何人都可以建议连接 oracle 的先决条件是什么 任何更改都需要在 web config 中进行 在web config中 默认它是与
  • 了解 MVC-5 身份

    我创建了一个新的ASP NET MVC 5申请与Individual User Accounts然后更新了所有的Nuget packages在解决方案中 现在我尝试遵循一些教程中显示的一些指南 但遇到了一些问题 第一个是一个名为Applic
  • 使用 EF 6 和 MVC 5 中的 Code First 方法将新表添加到现有数据库

    我知道这应该很简单 但我无法在网上找到有关此主题的正确教程或解释 有很多关于使用代码优先方法向现有表添加新列的视频和帖子 但我找不到任何关于如何将整个新表添加到现有数据库的分步说明 这很奇怪 我很确定我会找到很多例子 也许我的搜索条件不好
  • 将 xml 发送到 ASP.NET MVC 操作方法参数

    是否可以将 POX 普通旧 xml 发送到操作中 并让该操作为您执行到对象的模型绑定 我见过使用 JSON 完成此操作 但没有看到任何人使用 xml 完成此操作 考虑做类似的事情 但是使用 JSON 我想你也可以使用动作过滤器属性 http
  • EF6 找不到 LocalDBConnectionFactory

    我有 2 个项目 类库 作为 DAL 层 和 ASP NET MVC 项目 作为 UI 为了获取数据 我尝试使用 EF6 但它不起作用 所有异常文本 EntityFramework dll 中发生 System InvalidOperati
  • 对于相同的数据库对象,实体框架对象引用是否相同

    如果我从不同位置查询 逻辑上 在数据库中 相同的对象 实体框架是否返回相同的对象引用 例如 我查询了名为 Joe Black 的客户 并假设现在我知道数据库中只有一个 Joe Black Customer c select blabla w
  • EF Core - 在运行时向数据库添加新表

    我有一个 asp net core 项目 需要能够在运行时支持插件 因此 我需要根据插入的内容生成数据库表 每个插件都分为单独的项目 并且它们具有他们自己的 DbContext 类 要使用的插件在编译时是未知的 只有在运行时才知道 现在在
  • EF Core 第二级 thenIninclude 错误

    假设首先有这些模型 Method有一个OriginalCode OriginalCode那有很多Mutants Mutant那有很多ParseSubTrees 现在当查询时Method我希望加载另一个 所以我有以下内容 Method tar
  • 同时使用实体框架与 SQL Server 和 SQLite 数据库

    我有一个用于测试目的的 C Net 4 0 控制台应用程序 使用 VS 2012 我的目标是能够创建一个可在 MS SQL Server 数据库和 SQLite 数据库上使用的单个实体框架 edmx 文件 基本上 我想使用相同的实体模型类和
  • 在 Chrome/Safari 中添加 html5 属性后 Ajax 表单中断

    分步说明 新建 Asp Net MVC2 项目 Model public class TestModel public int Property get set 家庭控制器 HandleError public class HomeCont
  • 如何在 Entity Framework 4.4 中实现 DBSet.AddOrUpdate?

    回应 Slauma 对我的问题的回答关于在 Windows XP 上运行使用 EF 的应用程序 https stackoverflow com questions 17963417 can i implement entity framew
  • 应用程序内的 SQLite 文件版本兼容性

    我有一个 C NET 应用程序 一种复杂的计算应用程序 其中用户输入数据 处理后的信息使用 JSON 序列化和 EF 保存到 SQLite 文件中 需要时可以将其加载到我们的应用程序中 应用程序在开发过程中经历了很多变化 类也被修改 因此
  • 包括过滤器子集合[重复]

    这个问题在这里已经有答案了 我在为 LINQ 查询中包含的项目添加一些过滤条件时遇到一些困难 我的查询就像 var item Context Order Include Inner Include Inner first Include I
  • 使用实体框架重叠约会

    我将 asp net mvc 与实体框架一起使用 我有一个包含 startat 字段 endat 字段和 roomid 字段 称为 SpaceConfigurationId 的约会列表 并且希望查找给定房间已重复预订的约会列表 可以假设 e
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91

随机推荐

  • Az / AzureRM / 旧版 Azure Powershell 冲突

    我正在尝试从 AzureRM 升级到适用于 powershell 的新 Az 模块 我们仍然有多种使用 旧版 服务管理 API 资源的情况 例如经典的 Azure 云服务 并且这些 据我所知 仍然需要使用旧的 Azure powershel
  • 通过在循环外声明对象是否有任何性能提升

    我有一段代码 在循环内声明一个对象 例如 foreach ClassA clA new ClassA clA item1 1 clA item2 2 ClassB Add clA 如果我将代码修改如下 是否会有任何性能提升 ClassA c
  • 一旦超出范围,C 会重用本地块 var 的内存吗?

    我相信这个问题在技术上不同于局部变量的内存可以在其作用域之外访问吗 因为它是 C 而不是 C 我知道在 C 中你可以将局部变量放在一个块中 它的作用域将限于该块 include
  • 我们真的可以在所有情况下都避免 goto 吗?

    Fortran 90 及更高版本强烈建议不要使用goto陈述 然而 我仍然觉得被迫在以下两种情况下使用它 Case 1 指示重新输入输入值 例如 program reenter 10 print Enter a positive numbe
  • Node Express 不处理并行请求

    我刚刚创建了一个 NodeJS Express 服务器来了解 NodeJS 的工作原理 我了解到 NodeJS 可以同时处理大量 API 请求 因为 CPU 密集型任务不是由同一线程完成的 然而 我的服务器甚至无法同时处理 2 个请求 即使
  • 回收 IIS7 应用程序池是否会终止任何当前正在执行的请求?

    回收 IIS7 应用程序池是否会终止任何当前正在执行的请求 或者它是否等待所有请求完成 如排水停止 我不希望回收规则导致我的 WCF 站点出现间歇性错误 Thanks No 默认情况下 WWW 服务 建立重叠回收 在 哪个工作进程是 终止后
  • Keras:计算模型输出与输入返回的导数[无]

    我需要帮助计算 Keras 中模型输出与输入的导数 我想在损失函数中添加正则化函数 正则化器包含分类器函数的导数 所以我尝试对模型输出求导 该模型是具有一个隐藏层的 MLP 数据集是 MNIST 当我编译模型并求导数时 我得到的结果是 No
  • 批量复制所有文件而不覆盖

    set dSource C Games Steam steamapps set dTarget E Demos set fType dem xcopy i dSource fType dTarget 这就是我目前必须复制所有文件的方法 但是
  • 如何使用 C# 获取 GAC 的位置?

    我怎样才能得到的位置GAC目录使用C Windows 注册表中是否存在条目 UPDATE 我需要该位置 因为我想枚举和分析位于 GAC 中的程序集 Bye 如果您想枚举 GAC 中的内容 例如编写系统管理工具 您最好的选择是使用 fusio
  • 名称由单下划线分割的 ASP.NET Core 选项模式

    我正在尝试使用 ASP NET Core 选项模式加载我的应用程序设置 The appsettings json包含 TEst hello TEST ABC 2 POCO类 public class AppSetting public st
  • li:将鼠标悬停在访问过的颜色上

    在我的 li 元素中 我有一个链接和一个跨度中包含的一些文本 当我将鼠标悬停在 li 上时 我想更改文本和链接的颜色 这效果很好 但是我正在努力设置访问的颜色并保留此功能 这是我的代码 HTML ul class tour 1 li spa
  • 为什么不能在 for 循环内操作“i”[重复]

    这个问题在这里已经有答案了 为什么 for i in range 10 i 1 print i return 1 2 3 4 5 6 7 8 9 10 代替 2 4 6 8 10 如果需要更多细节 这里将提供一些细节 for i in ra
  • php scandir 产生额外的元素(2 个点)

    Hi 我在名为 content 的目录中有以下文件 index php page1 php page2 php 和 page3 php 然后我有这个代码 column scandir content foreach column as va
  • 在VLOOKUP中动态更改源工作簿的文件路径

    我想要一个包含文件路径的单元格 C Documents Costs Costing 2017 xls Sheet2 A D 将用于VLOOKUP在工作簿其余部分的不同工作表中发挥作用 目前 我的文件路径位于名为 Master Sheet 的
  • 获取二进制文件 C 的哈希值

    我想获取我所知道的名称的二进制文件的哈希值 我尝试过以下方法 但后来意识到SHA1 返回字符串 文件名 的哈希值 但我想在文件本身上运行它 任何关于如何做到这一点的指示都会很棒 char fileName bin ls unsigned c
  • scalaz 中的类型类和继承

    这是我第二次尝试定义问题 我无法理解它 我希望能够定义一个代数类型并在其上定义一个简单的类型类 比方说Show 在哈斯克尔我做 data Tree a EmptyTree Node a deriving Show 现在 如果我输入Empty
  • 使用 Linq 从 IEnumerable 中提取数据并将其存储在数据表中

    我有一个如下所示的数据表 public static DataTable SetColumnHeaders DataTable KeyDataTable KeyDataTable Columns Add First Name typeof
  • 在内联 html img 标签中显示带有图像标签的 SVG

    为了将 SVG 转换为 PNG 我将 svg insideHTML 内容放入 img 标签中 如下所示 img src gt SVG 图片无法正确显示 尤其是 SVG 标签内的图片 如下所示 其他 svg 标签正确显示
  • 尝试为文件 附加自动命名数据库失败。存在同名数据库

    我的项目的 App Data 文件夹中有 ASPNETDB MDF 数据库 当我尝试添加用户时出现错误 MembershipUser user Membership CreateUser viewModel Username viewMod
  • MVC2 RTM - 使用实体框架模型绑定复杂对象

    我是 MVC 新手 并且真的很挣扎于我认为这应该是一个非常常见的场景 我正在使用 MVC2 RTM 和模型对象的实体框架 我正在做的工作 包含子对象集合的父对象的编辑视图 该表单显示父对象的所有可编辑字段 并迭代并显示所有关联子对象的所有可