将对象添加到 Umbraco 控制器中的列表

Add object to list in Umbraco controller

我是强类型语言的新手,我正在使用 Umbraco 控制器输出一些 JSON 和日期列表。

"meetingTimes": [10:30, 11:30]

效果很好。现在我想输出一个包含唯一键的时间的 extry 字段

所以应该是这样的

meetingTimes: [{ time: "10:30", key: "abcd-1234-efgh-5678" }, { time: "11:30", key: "defg-1234-sktg-5678" }]

但我不知道该怎么做。

我当前处理此问题的代码部分是:

try {            
                IPublishedContent content = Umbraco.Content(Guid.Parse("ff3e93f6-b34f-4664-a08b-d2eae2a0adbd"));
                var meetingDatesAvailabled = content.Value<IEnumerable<IPublishedElement>>("meetingDatesAvailable");
            
                var items = new List<object>();
               
                foreach(var meetingDate in meetingDatesAvailabled)
                {
                    if (meetingDate.Value("meetingItemDay").ToString().Substring(0, 8) == theDate) {
                        var times = meetingDate.Value<IEnumerable<IPublishedElement>>("meetingItemDayTimes");

                        foreach (var time in times)
                        {
                            items.Add(time.Value("meetingdateTimeItem").ToString());
                        }
                    }
                }

                return new { dateChosen = theDate, meetingTimes = items };
            }

最初,我们必须创建一个抽象会议时间的class:

public class MeetingTime
{
    public string Time { get; }
    public Guid   Key  { get; }

    public MeetingTime(string time, Guid key)
    {
        Time = time;
        Key = key;
    }
} 

然后我们将创建一个 MeetingItem 的空列表,而不是创建一个 objectvar items = new List<object>();.

的空列表
var items = new List<MeetingItem>();

然后在你的内心foreach:

foreach (var time in times)
{
    items.Add(new MeetingTime(time.Value("meetingdateTimeItem").ToString(), 
                              Guid.NewGuid())
    );
}

注意:我不知道您序列化 objects 的方式(例如 https://www.newtonsoft.com),但很可能您必须同时装饰属性 TimeKey 具有在序列化期间使用专有名称的属性。如果您不这样做,那么它将使用默认名称 TimeKey。我这样说,是因为我在你分享的 json 中注意到你想成为 timekey