長い一日だったかもしれませんが、CompositeControl で ASP.NET ViewState に基づくコレクションを永続化するのに問題があります。簡略版は次のとおりです。
public class MyControl : CompositeControl
{
public Collection<MyObject> MyObjectCollection
{
get {
return (Collection<MyObject>)ViewState["coll"] == null ?
new Collection<MyObject>()
: (Collection<MyObject>)ViewState["coll"];
}
set { ViewState["coll"] = value; }
}
}
public partial class TestPage : System.Web.UI.Page
{
protected void btn_Click(object sender, EventArgs e)
{
myControl1.MyObjectCollection.Add(new MyObject());
}
}
ボタンがクリックされると、イベント ハンドラ btn_Click は正常に実行されますが、MyObjectCollection のセッターは呼び出されないため、new MyObject() は永続化されません。
私はちょうど金髪の瞬間を過ごしていると思います。手伝ってくれる人いますか?