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. И вие също трябва да регистрирате този module.config

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