微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

2sxc 自定义 API 返回实体列表

如何解决2sxc 自定义 API 返回实体列表

我有一个字段设置为实体,可以选择多个项目。

我有以下 API 部分:

[HttpPost]
    public TriggerDetails returnTriggerInfo([FromBody] string CatId)
    {
       var returnTriggerDetails = new TriggerDetails();
       
       var CatList = AsList(App.Data["Categories"]);
       var myCat = CatList.Where(a => a.EntityId.ToString() == CatId.ToString());
       if (myCat.Count() == 1)
       {
            var thisCat = myCat.First();
            returnTriggerDetails.CatName = thisCat.CatName;
            returnTriggerDetails.Level = thisCat.Level;
            returnTriggerDetails.Registry = thisCat.Registry;
            returnTriggerDetails.Trigger = AsList(thisCat.Trigger); // Need help here. This is the field set up as entity
       }
        
        return returnTriggerDetails;
    }

public class TriggerDetails {
    public string CatName {get;set;}
    public string Level {get;set;}
    public string Registry {get;set;}
    public IEnumerable<dynamic> Trigger {get;set;} // Need help here too
}

需要返回相同的字段而不指定原始实体的内容(来自链接实体的字段)。 我怎样才能投射这个以便返回“类别”中“触发器”字段的全部内容

解决方法

基本上,您似乎希望将 thisCat.Trigger 的“整个实体”序列化 - 对吗?

注意:通常你可能更喜欢在 VisualQuery 中做这样的事情

仅供参考:实体并没有像您想象的那样很好地序列化,因为它们在内部是多语言的。

最简单的方法是使用我们的转换器

https://docs.2sxc.org/api/dot-net/ToSic.Sxc.Conversion.DataToDictionary.html

创建一个转换器对象,然后调用 converter.Convert(yourEntity),它应该会给你一个简单的对象,它可以在自动序列化中很好地工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。