在自定义属性上设置默认值

时间:2011-01-26 13:31:31

标签: c# episerver

我创建了一个longstring自定义属性,它给了我一个XHTML编辑器。到目前为止这么好,但我需要帮助两件事。

首先,我想用默认值填充属性。我已经看了几篇关于这个的博客文章,但似乎无法做到这一点。

其次,我想将自定义属性渲染为可以容纳大字符串的常规textbox

public class CustomerTypeBoxControl :
    EPiServer.Web.PropertyControls.PropertyLongStringControl
{
    protected override void SetupEditControls()
    {
        base.SetupEditControls();                            
    }

    public CustomerTypeBox CustomerTypeBox
    {
        get
        {
            return PropertyData as CustomerTypeBox;
        }
    }
}

[Serializable]
[PageDefinitionTypePlugIn]
public class CustomerTypeBox : EPiServer.Core.PropertyLongString
{
    public override IPropertyControl CreatePropertyControl()
    {
        return new CustomerTypeBoxControl();
    }
}

1 个答案:

答案 0 :(得分:0)

不知道它是否与钢有关,但这是解决方案:

TextBox _textBox;
protected override void SetupEditControls()
{
    base.SetupEditControls();

    _textBox = (TextBox)EditControl;
    var value = CustomerTypeBox.Value ?? string.Empty;
    if (String.IsNullOrEmpty(value.ToString()))
    {
        _textBox.Text = "Default text";
    }
    else
    {
        _textBox.Text = value.ToString();
    }
    if (_textBox != null) EditControl.Parent.Controls.Add(_textBox);
}

public override void ApplyEditChanges()
{
    var customerTypeBoxValue = _textBox.Text;

    if (customerTypeBoxValue != null)
    {
        SetValue(customerTypeBoxValue);
    }
}

属性的默认值也可以在管理模式下设置。