【问题标题】:2sxc custom API return list of entities2sxc 自定义 API 返回实体列表
【发布时间】:2021-03-24 11:30:26
【问题描述】:

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

我有以下 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
}

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

【问题讨论】:

  • 您能概括一下.Trigger 是什么吗?我假设这是实体,thisCat.Trigger 可能包含 0、1 或许多目标内容类型。但是您能否更具体地了解您的期望 returnTriggerDetails.Trigger to contain/return? It seems like you may just need to use something like = (thisCat.Trigger as Dynlist).Select(t => t.This as ...)` 所以您只是在 AsList() 中返回所需的字段?

标签: c# dotnetnuke 2sxc


【解决方案1】:

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

注意:一般而言,您可能更愿意在 VisualQuery 中执行类似的操作

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

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

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

创建一个转换器对象,然后调用converter.Convert(yourEntity),它应该会为您提供一个简单的对象,该对象可以很好地用于自动序列化。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 2018-11-05
  • 1970-01-01
  • 2013-07-24
  • 2020-12-20
相关资源
最近更新 更多