用户控件属性在渲染之前丢失值

时间:2012-08-23 18:35:19

标签: asp.net user-controls

我有一个名为Navigation的用户控件,它具有一个包含导航组的属性:

protected List<NavigationGroup> NavigationGroups { get; set; }

我在Page_Load:

期间设置了此属性
protected void Page_Load(object sender, EventArgs e)
{
    // Get all navigation items.
    NavigationGroups = From.Somewhere.Else.Groups;
}

可以在控件中的其他方法调用期间访问该值。但是,在执行命中Render方法时,NavigationGroups属性为空。导致价值消失的原因是什么?如何让它消失?


尽管这一切都是在一次加载期间发生的 - 而不是试图在回发之间保持它 - 我尝试storing the property in ViewState,但这也没有帮助。在OnPreRender和Render之间仍然消失。


编辑:从评论中添加信息。

看起来唯一失去价值的领域是这一领域,因为它被设置为在其他地方创建的列表。但是,对我的本地列表进行更改不会影响其他列表,并且在擦除本地列表时仍会对其他列表进行评估。

1 个答案:

答案 0 :(得分:0)

无法解释问题发生的原因,因为两个List可证明是分开的,但使用deep copy可以解决问题:

NavigationGroups = GetDeepCopy<List<NavigationGroup>>(From.Somewhere.Else.Groups);