ASP.NET Benutzer-Steuerung: Page_Load-feuert, bevor-Eigenschaft festgelegt ist
Dieser macht mich verrückt.
Habe ich eine sehr einfache Benutzer-Steuerung:
public int? ImageId {set; get;}
protected void Page_Load(object sender, EventArgs e)
{
... do something with ImageId...
}
Und dann habe ich das Steuerelement auf die Seite mit der ListView innerhalb UpdatePanel:
<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>
Das problem ist Page_Load-feuert, BEVOR ASP.NET setzt ImageId. Mit debugger-Hilfe fand ich heraus, dass aus irgendeinem Grund, ImageId in MyControl IST GESETZT, aber es passiert nur nach dem Page_Load-fertig verarbeitet. Was ist falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist wahrscheinlich, weil Datenbindung an das ListView passiert NACH dem Page_Load feuert, also Ihr Eigentum nicht an diesem Punkt. Sie bewegen könnte, Ihren code zu PreRender-Ereignis, da er aufgerufen wird, nachdem data binding ist abgeschlossen.
Mehr info nach MSDN:
PreRender-Bevor dieses Ereignis Eintritt: