EPiServer — пользовательское свойство не отображается в режиме редактирования.

Я почесал голову по этому вопросу, и я остался пустым.

У меня есть PageType, содержащий пользовательское свойство, которое напрямую копируется из AlloyDemo.

    [BackingType(typeof(PropertyStringList))]
    [Display(Order = 305)]
    [UIHint(Global.SiteUIHints.Strings)]
    [CultureSpecific]
    public virtual string[] Address { get; set; }

Класс BackingType PropertyStringList выглядит так:

[EditorHint(Global.SiteUIHints.Strings)]
[PropertyDefinitionTypePlugIn(Description = "String List", 
DisplayName = "String List")]
public class PropertyStringList : PropertyLongString
{
    protected String Separator = "\n";

    public String[] List
    {
        get
        {
            return (String[])Value;
        }
    }

    public override Type PropertyValueType
    {
        get
        {
            return typeof(String[]);
        }
    }

    public override object SaveData(PropertyDataCollection properties)
    {
        return LongString;
    }

    public override object Value
    {
        get
        {
            var value = base.Value as string;

            if (value == null)
            {
                return null;
            }

            return value.Split(Separator.ToCharArray(),        
    StringSplitOptions.RemoveEmptyEntries);
        }
        set
        {
            if (value is String[])
            {
                var s = String.Join(Separator, value as String[]);
                base.Value = s;
            }
            else
            {
                base.Value = value;
            }

        }
    }

    public override IPropertyControl CreatePropertyControl()
    {
        //No support for legacy edit mode
        return null;
    }
}

Когда я запускаю сайт, он отображает (в режиме редактирования) адрес свойства следующим образом:

Сбой рендеринга, который является кнопкой И когда я нажимаю кнопку, я получаю следующее: Исключение пустой ссылки во всплывающем окне

Я серьезно понятия не имею, почему это происходит. Кто-нибудь может объяснить?

С уважением, Крис


person ChrisRun    schedule 08.10.2015    source источник


Ответы (1)


Вам не хватает дескриптора редактора. Проверьте «StringListEditorDescriptor.cs» в проекте Alloy. Вам также понадобятся ресурсы клиента — скрипт StringList dojo. И еще нужно прописать этот module.config

person user1061407    schedule 08.10.2015
comment
Вы абсолютно правы, я совершенно забыл о дескрипторе редактора. Благодарю вас! - person ChrisRun; 08.10.2015