.net Umbraco相关链接在V8升级后丢失

lf5gs5x2  于 2023-11-20  发布在  .NET
关注(0)|答案(1)|浏览(122)

我有一个问题,从Umbraco V7升级到V8后,我的相关链接丢失了。我看到,当我得到的信息,他们仍然在那里的响应,但我不能看到他们在 Jmeter 板。更新前的数据类型是“RelatedLinks”和更新后的数据类型是“多网址选取器”
problem
problem2
picture with created new related link

yhxst69z

yhxst69z1#

在Umbraco v8上,相关链接数据类型已更改为Multi Url Picker。您的第一步应该是检查您的问题是配置问题还是数据问题。
要检查这是否是数据问题,您可以使用相同的文档类型(和数据类型)创建一个新页面。如果它没有显示任何错误,则它必须与数据相关。
如果是数据错误,那么您可以尝试寻找解决方案来更新或创建数据。
如果你没有太多的页面有这个问题,你可能需要考虑手动创建/更新有这个问题的内容页面。另一个选择是检查数据库,找出丢失的位,并通过一些脚本更新数据。
最后一种方法可以尝试通过创建一个ValueConverter来修复数据问题,类似于下面的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Umbraco.Cms.Core.Models.PublishedContent;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.PropertyEditors.ValueConverters;
using Umbraco.Cms.Core.PublishedCache;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Core.Web;

namespace AnUmbracoV10ProjectName.Configurator.Core.Util
{
    public class IntUdiMultiNodeTreePickerValueConverter : MultiNodeTreePickerValueConverter
    {
        private readonly IPublishedSnapshotAccessor _publishedSnapshotAccessor;

        public IntUdiMultiNodeTreePickerValueConverter(IPublishedSnapshotAccessor publishedSnapshotAccessor, IUmbracoContextAccessor umbracoContextAccessor, IMemberService memberService) : base(publishedSnapshotAccessor, umbracoContextAccessor, memberService)
        {
            _publishedSnapshotAccessor = publishedSnapshotAccessor;
        }

        public override object? ConvertSourceToIntermediate(IPublishedElement owner, IPublishedPropertyType propertyType, object? source, bool preview)
        {
            if (source == null)
            {
                return null;
            }

            if (propertyType.EditorAlias.Equals(Umbraco.Cms.Core.Constants.PropertyEditors.Aliases.MultiNodeTreePicker))
            {
                Udi?[]? nodeIds = source.ToString()?
                    .Split(Umbraco.Cms.Core.Constants.CharArrays.Comma, StringSplitOptions.RemoveEmptyEntries)
                    .Select(ParseUdiOrInt)
                    .ToArray();
                return nodeIds;
            }

            return null;
        }

        protected Udi? ParseUdiOrInt(string id)
        {
            if (UdiParser.TryParse(id, out var udi))
            {
                return udi;
            }

            if (Int32.TryParse(id, out var integer))
            {
                if (_publishedSnapshotAccessor.TryGetPublishedSnapshot(out var publishedSnapshot))
                {
                    var item = publishedSnapshot?.Media?.GetById(integer);

                    if (item is not null)
                    {
                        return new GuidUdi(Umbraco.Cms.Core.Constants.UdiEntityType.Media, item.Key);
                    }
                }
            }

            return null;
        }
    }
}

字符串
x1c 0d1x的数据

相关问题