在Composite Controls和ViewState中公开属性

时间:2011-05-18 11:55:47

标签: c# asp.net viewstate

在CompositeControl中公开子控件属性的常用方法如下:

public class MyControl : CompositeControl {
    private TextBox _box;
    public override short TabIndex
    {
        get 
        { 
            EnsureChildControls();
            return _box.TabIndex;
        }
        set
        {
            EnsureChildControls();
            _box.TabIndex = value;
        }
    }

    protected override void CreateChildControls()
    {
        Controls.Clear();
        _box = new TextBox {ID = "box"};
        Controls.Add(_box);
    }
// ...

}

这种方法是否正确?因为EnsureChildControls将TextBox添加到控件集合中,因此会触发其ViewState跟踪,因此对于这样的声明性构造:

<uc:MyControl ID="My" runat="server" TabIndex="10"  />

ViewState不必要地混乱(或者不是吗?)

0 个答案:

没有答案