【发布时间】:2020-11-10 02:51:13
【问题描述】:
注意:此时我在这个项目上被困在 2sxc v9.43.2 上。
从我的内容类型中选择一组记录后,我需要能够复制它们,同时更改其中的一个字段。到目前为止,这是我几乎可行的想法。用例很简单,他们有人们可以注册的程序。他们每个季节都会改变,但只有一点点(价格、日期/时间等)。他们在编辑下一季时需要当前季保持不变。因此,我们仍处于秋季(EntityId 1732),有 97 个活动程序。我们想单击一个按钮并按原样克隆所有 97 个程序,但要进入新的下一季(以下 1735 个)。
两个问题:
- 如果这种方式可行,那么在 ent/Attributes 上可以使用什么语法来根据需要在
fields.Add()行中传递“对象” - 还有另一种 2sxc 方法可以做到这一点吗? App.Data.Create() 方法的其他变体或 API 中的其他方法?我只需要复制更改了 1 个字段(季节)的记录?
- 在最新版本的 2sxc v11.7+ 中是否有更好的方法?
// we are going to duplicate the current Season's programs in to the new season
// cheating for now, pre-made new 1735 in Seasons, current is 1732
var programs = AsDynamic(App.Data["Programs"])
.Where(p => ((List<DynamicEntity>)p.Season).First().EntityId == selectedSeason.EntityId);
// @programs.Count() // 97
foreach(var copy in programs)
{
var fields = new Dictionary<string, object>();
var ent = AsEntity(copy);
foreach(var attr in ent.Attributes)
{
if(attr.Key == "Season")
{
fields.Add(attr.Key, new List<int> { 1735 });
}
else
{
fields.Add(attr.Key, ent.GetBestValue(attr.Key)); // object??
}
}
App.Data.Create("Programs", fields);
}
【问题讨论】:
-
这仍然是个问题吗?我很乐意提供帮助,但已经离开 SO 一个月了,所以我不想把时间花在已经解决的问题上。
-
是的,仍然打开,无法解决。尝试了许多不同的旋转和语法,但无法在不引发错误的情况下创建()。我仍然需要一种代码方法来克隆现有实体。并在创建之前或之后更新它。似乎 API 中的某个地方应该有一些简单的东西,但我找不到。
标签: c# dotnetnuke 2sxc