【问题标题】:Add object to list in Umbraco controller将对象添加到 Umbraco 控制器中的列表
【发布时间】:2021-08-17 11:05:38
【问题描述】:

我是强类型语言的新手,我正在开发一个 Umbraco 控制器,该控制器输出一些带有日期列表的 JSON。

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

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

应该是这样的

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 };
            }

【问题讨论】:

    标签: c# json list umbraco strong-typing


    【解决方案1】:

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

    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&lt;object&gt;();

    var items = new List<MeetingItem>();
    

    然后在你里面foreach:

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

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

    【讨论】:

    • 太棒了!这正是我想要的!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多