gpt4 book ai didi

c# - ASP.NET 用户控件 : Page_Load fires before property is set

转载 作者:可可西里 更新时间:2023-11-01 09:08:39 26 4
gpt4 key购买 nike

这让我发疯。

我有一个非常简单的用户控件:

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 完成处理后才会发生。怎么了?

最佳答案

这可能是因为 ListView 上的数据绑定(bind)发生在 Page_Load 触发之后,因此此时您的属性未设置。您可以将代码移至 PreRender 事件,因为它是在数据绑定(bind)完成后调用的。

更多信息根据 MSDN :

PreRender -- 在此事件发生之前:

  • Page 对象为每个控件和页面调用 EnsureChildControls。
  • 设置了 DataSourceID 属性的每个数据绑定(bind)控件都会调用其 DataBind 方法。

关于c# - ASP.NET 用户控件 : Page_Load fires before property is set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1383710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com