我正在构建一个复合服务器控件,该控件当前只有一个 TextBox 和一个 DropDownList。这是所有胎儿荣耀的代码:
public Address : CompositeControl
{
private string[] _states = new string[]
{
string.Empty, "ACT", "NSW", "VIC", "QLD", "SA", "WA", "NT", "TAS"
};
private TextBox _street;
private DropDownList _state;
public string Street
{
get { return _street.Text; }
set { _street.Text = value; }
}
public string State
{
get { return _state.Text; }
set { _state.Text = value; }
}
public Address() : base()
{
EnsureChildControls();
}
protected override void CreateChildControls()
{
_street = new TextBox();
_state = new DropDownList();
_state.Items.AddRange(
Array.ConvertAll<string, ListItem>(_states, ListItem.FromString));
Controls.Add(_street);
Controls.Add(_state);
}
}
该控件似乎在回发中正常工作,直到设置了声明性值,例如:
<squee:Address runat="server" ID="a" Street="123 Fake St" State="VIC" />
在此之后,文本框继续正常工作,但 _state 成员不会拾取回发的值,而只是坚持声明的值。我检查了 Request 对象中的原始发布值,并且列表的 UniqueID 的新值在那里,但 _state 没有选择它。
我很确定这将是显而易见的,但我只是在这里旋转我的轮子。