EPiServer - 不在编辑模式下呈现自定义 属性。
EPiServer - not rendering the custom property in Edit mode.
这个问题我一直摸不着头脑,一头雾水
我有一个 PageType,其中包含直接从 AlloyDemo 复制的自定义 属性。
[BackingType(typeof(PropertyStringList))]
[Display(Order = 305)]
[UIHint(Global.SiteUIHints.Strings)]
[CultureSpecific]
public virtual string[] Address { get; set; }
BackingType PropertyStringList class 如下所示:
[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;
}
}
当我 运行 网站时,它呈现(在编辑模式下)这样的 属性 地址:
Rendering fail, which is a button
当我点击按钮时,我得到了这个:
Null Reference Exception in a popup
我真的不知道为什么会这样。有人可以解释一下吗?
此致,克里斯
您缺少编辑器描述符。查看 Alloy 项目中的 "StringListEditorDescriptor.cs"。您还需要客户端资源——StringList dojo 脚本。而且你还需要注册这个module.config
这个问题我一直摸不着头脑,一头雾水
我有一个 PageType,其中包含直接从 AlloyDemo 复制的自定义 属性。
[BackingType(typeof(PropertyStringList))]
[Display(Order = 305)]
[UIHint(Global.SiteUIHints.Strings)]
[CultureSpecific]
public virtual string[] Address { get; set; }
BackingType PropertyStringList class 如下所示:
[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;
}
}
当我 运行 网站时,它呈现(在编辑模式下)这样的 属性 地址:
Rendering fail, which is a button 当我点击按钮时,我得到了这个: Null Reference Exception in a popup
我真的不知道为什么会这样。有人可以解释一下吗?
此致,克里斯
您缺少编辑器描述符。查看 Alloy 项目中的 "StringListEditorDescriptor.cs"。您还需要客户端资源——StringList dojo 脚本。而且你还需要注册这个module.config