这真让我抓狂。
我有一个非常简单的用户控件:
public int? ImageId {set; get;}
protected void Page_Load(object sender, EventArgs e)
{
... do something with ImageId...
}
然后我把这个控件放在 UpdatePanel 中的 ListView 页面上:
<asp:ListView ID="ListViewImages" runat="server" DataSourceID="src">
<LayoutTemplate>
<asp:PlaceHolder ID="itemPlaceholder" runat="server" />
</LayoutTemplate>
<ItemTemplate>
<My:MyControl ImageId='<%# Eval("Id") %>' ID="cipPreview" runat="server" />
</ItemTemplate>
</asp:ListView>
问题是 Page_Load 在 ASP.NET 设置 ImageId 之前触发。在调试器的帮助下,我发现由于某种原因 MyControl 中的 ImageId 已设置,但它仅在 Page_Load 完成处理后才会发生。怎么了?