2sxc - 当要更新的实体具有对另一个实体的引用时,App.Data.Update 会引发对象引用错误
问题描述
当我尝试保存实体中的更改时,使用dynCode.App.Data.Update
. 我检查了数据字典中的所有变量和元素是否都可用,就是这种情况。代码:
public void ProcessReOrder(string elementId, string order)
{
var entityGuid = Guid.Parse(elementId);
decimal orderNr = Convert.ToDecimal(order);
var tabId = Dnn.Tab.TabID;
var modId = Dnn.Module.ModuleID;
var block = ToSic.Sxc.Dnn.Factory.CmsBlock(tabId, modId);
var dynCode = ToSic.Sxc.Dnn.Factory.DynamicCode(block);
var formElement = dynCode.AsList(dynCode.App.Data["FormElements"]).Where(x => x.EntityGuId == entityGuid).FirstOrDefault();
var converter = new EntitiesToDictionary();
var data = converter.Convert(AsEntity(formElement));
data["Order"] = orderNr;
dynCode.App.Data.Update(formElement.EntityId, data); <-- Throws the error
}
FormElements
当实体具有到另一个实体的链接时,它看起来可能是一个问题。当我创建一个只有名称(字符串)和订单(数字)作为字段的小样本并发送带有新订单号的 webApi 帖子时,它可以正常工作。
如何使用对其他实体的一个或多个引用来更新实体?
更新:问题已修复使用
Data["Form"] = new List<Guid>() { guid }
当您有字段组的空白字段时,我发现了第二个问题。当我有一个空字段时,我得到相同的对象引用错误。
解决方案
数据引用应该是 ID 指针——int 或 guid,作为列表或数组。
因此,即使您指向 1,也要确保它是[1]
or new List<int>() { 1 }
ornew List<Guid>() { guid}
类似的东西。
推荐阅读
- parsing - 拉丁语依赖解析器
- android - SQLite 连接在 Flutter 中返回 null
- css - CSS - 根据大小更改背景位置
- java - Javafx 服务器套接字 - 发送字符串消息
- c - 在C中使用数组将行更改为列
- google-cloud-platform - Google Cloud:如何将服务用户的角色添加到单个存储桶?
- fortran - Fortran共享库中的符号命名,intel vs gcc?
- ios - Braintree DropIn + Apple Pay,不出现 Apple Pay 项目
- ios - 单击 UICollectionViewCell 时如何在 UICollectionViewCell 周围画一个圆圈并从先前选定的单元格中删除其他圆圈?
- spring - 如何在 Spring Boot 中更改 Multipart 文件的最大大小?