asp.net - ObjectDataSource 没有要插入的值

我正在使用 ObjectDataSource 来执行 CRUD 操作。出于某种原因,我收到“ObjectDataSource‘ObjectDataSource1’没有要插入的值。检查‘values’字典是否包含值。”

有什么建议吗?

我知道这个控件继承自 ObjectDataSource 控件。根据文档http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.objectdatasource.insertmethod.aspx

如果设置了 DataObjectTypeName 属性,则该方法将以不同的方式解析。 ObjectDataSource 查找具有在 InsertMethod 属性中指定的名称的方法,该方法采用一个在 DataObjectTypeName 属性中指定的类型的参数。

这就是我的 ObjectDataSource 控件的设置方式。

<asp: ObjectDataSource ID="ObjectDataSource1" runat="server" 
                DataObjectTypeName="MyApplication.Entities.Domain.MyObject" ConflictDetection="CompareAllValues"
                OldValuesParameterFormatString="original{0}" SelectMethod="GetUserDisplays"
                InsertMethod="CreateMyObject" UpdateMethod="UpdateMyObject" DeleteMethod="DeleteDisplay">
            </asp:ObjectDataSource>

我在 InsertMethod 上设置了一个断点,但是当我尝试保存我的表单时应用程序甚至没有命中它。我怀疑由于某种原因没有正确实例化 DataObjectType。

我正在尝试在 ASPxGridview 控件的 EditForm 中执行插入操作,而 DataObjectType 是一个 EF POCO,其中有一些附加属性(标记为虚拟)以从 ObjectContext 加载相关实体。我认为这可能是问题所在,但不知道如何解决(已到处查看!!!)。

如有任何帮助,我们将不胜感激!

最佳答案

虽然我无法确定为什么 DataObjectType 没有被自动实例化,但我意识到在调用 ObjectDataSource 上的 InsertMethod 之前需要添加一个输入参数。为此,我需要在 Inserting 事件中添加输入参数(无论如何在我的场景中)。多亏了 StackOverflow 上的另一篇帖子,我才知道我需要从 ObjectDataSource 中删除“DataObjectTypeName”属性才能触发 Inserting 事件。

https://stackoverflow.com/questions/6312058/

相关文章:

sql-server - 为什么我的 SQL Server 标识值被重用?

sql - 是否可以用简单的汇编语言处理器级代码编写 SQL 语句?

c# - 将文件流长度转换为 int

css - 带有 CSS float div 的多行

php - 在 PHP5 的 _destruct 中自动取消设置所有类变量

qt - PyQt - 如何导入 .qss 文件?

php - 如何确定哪些脚本正在使用 fopen?

database-design - 事务处理 : How are simultaneous tran

c# - 如何访问 foreach 之外的变量 (C#)

regex - 从编号列表中删除数字和分隔符