EPiServer - 不在“编辑”模式下呈现自定义属性。

时间:2015-10-08 11:14:52

标签: episerver customproperty

我一直在为这个问题嗤之以鼻,我一言不发。

我有一个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;
    }
}

当我运行网站时,它会(在编辑模式下)呈现属性Address,如下所示:

Rendering fail, which is a button 当我点击按钮时,我得到了这个: Null Reference Exception in a popup

我真的不知道为什么会发生这种情况。有人可以解释一下吗?

问候,克里斯

1 个答案:

答案 0 :(得分:2)

您缺少编辑器描述符。查看" StringListEditorDescriptor.cs"在Alloy项目中。您还需要客户端资源 - StringList dojo脚本。您还需要注册此module.config