Проблемы с копированием кода из Umbraco v7 в Umbraco v8 - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь скопировать некоторый код с сайта, созданного на Umbraco v7, на сайт, созданный на Umbraco v8, но некоторые классы, похоже, не существуют в новой версии. Вот класс, который я пытаюсь скопировать:

using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Web;
using Umbraco.Core.Models;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Web;
using Umbraco.ModelsBuilder;
using Umbraco.ModelsBuilder.Umbraco;

namespace XXXX.UmbracoStarterKit.CMS.Models
{
    // Mixin content Type 1245 with alias "baseImage"
    /// <summary>Base Image</summary>
    public partial interface IBaseImage : IPublishedContent
    {
        /// <summary>Alternative Text</summary>
        string ImageAlt { get; }

        /// <summary>Bytes</summary>
        string UmbracoBytes { get; }

        /// <summary>Extension</summary>
        string UmbracoExtension { get; }

        /// <summary>Height</summary>
        string UmbracoHeight { get; }

        /// <summary>Width</summary>
        string UmbracoWidth { get; }
    }

    /// <summary>Base Image</summary>
    [PublishedContentModel("baseImage")]
    public partial class BaseImage : PublishedContentModel, IBaseImage
    {
#pragma warning disable 0109 // new is redundant
        public new const string ModelTypeAlias = "baseImage";
        public new const PublishedItemType ModelItemType = PublishedItemType.Media;
#pragma warning restore 0109

        public BaseImage(IPublishedContent content)
            : base(content)
        { }

#pragma warning disable 0109 // new is redundant
        public new static PublishedContentType GetModelContentType()
        {
            return PublishedContentType.Get(ModelItemType, ModelTypeAlias);
        }
#pragma warning restore 0109

        public static PublishedPropertyType GetModelPropertyType<TValue>(Expression<Func<BaseImage, TValue>> selector)
        {
            return PublishedContentModelUtility.GetModelPropertyType(GetModelContentType(), selector);
        }

        ///<summary>
        /// Alternative Text: The text used if  the image cannot be displayed. This can be useful for SEO and accessibility.
        ///</summary>
        [ImplementPropertyType("imageAlt")]
        public string ImageAlt
        {
            get { return GetImageAlt(this); }
        }

        /// <summary>Static getter for Alternative Text</summary>
        public static string GetImageAlt(IBaseImage that) { return that.GetPropertyValue<string>("imageAlt"); }

        ///<summary>
        /// Bytes: The size of the image in bytes.
        ///</summary>
        [ImplementPropertyType("umbracoBytes")]
        public string UmbracoBytes
        {
            get { return GetUmbracoBytes(this); }
        }

        /// <summary>Static getter for Bytes</summary>
        public static string GetUmbracoBytes(IBaseImage that) { return that.GetPropertyValue<string>("umbracoBytes"); }

        ///<summary>
        /// Extension: The image extension.
        ///</summary>
        [ImplementPropertyType("umbracoExtension")]
        public string UmbracoExtension
        {
            get { return GetUmbracoExtension(this); }
        }

        /// <summary>Static getter for Extension</summary>
        public static string GetUmbracoExtension(IBaseImage that) { return that.GetPropertyValue<string>("umbracoExtension"); }

        ///<summary>
        /// Height: The height of the image.
        ///</summary>
        [ImplementPropertyType("umbracoHeight")]
        public string UmbracoHeight
        {
            get { return GetUmbracoHeight(this); }
        }

        /// <summary>Static getter for Height</summary>
        public static string GetUmbracoHeight(IBaseImage that) { return that.GetPropertyValue<string>("umbracoHeight"); }

        ///<summary>
        /// Width: The width of the image.
        ///</summary>
        [ImplementPropertyType("umbracoWidth")]
        public string UmbracoWidth
        {
            get { return GetUmbracoWidth(this); }
        }

        /// <summary>Static getter for Width</summary>
        public static string GetUmbracoWidth(IBaseImage that) { return that.GetPropertyValue<string>("umbracoWidth"); }
    }
}

Выше public partial class BaseImage есть атрибут (PublishedContentModel("baseImage")), но, похоже, его нет в v8. В версии 7, когда я просматриваю определение, я вижу параметр PubContentModelAttribute, который является частью пространства имен Umbraco.Core.Models.PublishedContent. Есть ли замена для этого в v8?

В методе GetModelContentType есть вызов к ArtistContentType.Get, но метод Get также отсутствует в пространстве имен Umbraco.Core.Models.PublishedContent в v8. Какие-нибудь предложения, что я мог бы использовать вместо этого?

В методе GetModelPropertyType есть вызов ОпубликованоConContentModelUtility.GetModelPropertyType, но PubContentModelUtility больше не существует в Umbraco.ModelBuilder.Umbraco. Есть ли альтернатива в v8?

Далее, есть несколько вызовов this.GetPropertyValue, который должен находиться в пространстве имен Umbraco.Web.PublishedContentExtenions, но не может быть найден в v8. Кто-нибудь может подсказать, какой код я могу использовать вместо этого?

Я понимаю, что здесь есть несколько вопросов, но все они являются частью одной и той же проблемы, и все они мешают мне выполнить мою задачу.

1 Ответ

0 голосов
/ 28 октября 2019

Посмотрите на https://our.umbraco.com/forum/umbraco-8/98400-errors-thrown-after-upgrade-to-811

LOT был изменен с v7 на v8, включая некоторые вещи из ModelsBuilder. Похоже, некоторые из них сейчас используют интерфейсы. Может быть, позволить Umbraco 8 ModelsBuilder создать новый класс моделей для вас, а затем посмотреть, сможете ли вы определить изменения таким образом?

...