2SXC Web API - 为ADAM Asset创建内容项元数据

问题描述 投票:0回答:2

我有一个内容项,其中包含一个包含文件库的字段。我创建了一个单独的内容项来存储文件的元数据,其中包括一个名为SortOrder的整数字段,用于控制页面上图像的顺序。

为了在客户端的请求下更快地进行排序,我为管理员创建了一个页面,其中包含一个jQuery可排序的图像网格,可以进行拖放排序。每次拖动图像时更新元数据都可以很好地工作。

问题是每次将新图像拖入库时都不会自动创建元数据条目,因此在这种情况下,没有要更新的元数据。我可以手动创建内容项,但在API中似乎没有办法将其标记为属于特定的库项目。

希望有人可以帮我找到一种方法,使用2SXC WebAPI或c#代码将元数据添加到任何不存在的库项目。我在数据库中看到使用AssignmentObjectTypeID和KeyString字段在ToSIC_EAV_Entities中链接实体,但我宁愿不进行直接的数据库更改。这些更改似乎也需要清除缓存并重新启动应用程序池以反映在UI中。

2sxc
2个回答
1
投票

到目前为止,这实际上是REST API中缺少的细节,但App.Data.Create对此有一个重载。看看https://github.com/2sic/eav-server/blob/master/ToSic.Eav.AppEngine/DataSources/App.cs#L26

所以它并不完美,但你现在应该可以继续工作了。


0
投票

根据您的指示,我能够使用自定义WebAPI创建解决方案:

    var contentTypeName = "PhotoDetails";
    var userName = Dnn.User.Username;
    var fileId = metadata.FileId.ToString();

    MetadataFor target = new MetadataFor()
    {
        TargetType = 10,                                // hardcoded based on other content item metadata for no until further understood
        KeyString = "file:" + fileId                    // file number comes from dnn's file table
    };

    var values = new Dictionary<string, object>()
    {
        {"Title", metadata.Title},
        {"SortOrder", (fileId+99)},                     // make new images appear at the end by adding 99 to the fileid so they stay in the upload order
        {"IsPrimary", false}                            // image is not a primary photo by default
    };

    App.Data.Create(contentTypeName, values, userName, target);

再次感谢你的建议!

© www.soinside.com 2019 - 2024. All rights reserved.