重复器中的用户控件

4
我有一个用户控件,提供投票按钮(用于SO类型的投票模型) - 它包含一个私有int成员,保留记录的ID。在重复器之外,它可以正常工作 - postback可以使用,并且正确的ID保留在用户控件中。
在重复器内部,itemdatabound事件处理程序将正确的ID与用户控件相关联,并且它可以正确地工作 - 从数据库显示正确的投票数。但是,当按下其中一个投票按钮时,它会触发postback到用户控件,并且该控件已经失去了其私有int成员的内容,因此不再起作用。
我尝试了在postback上重新绑定用户控件以及仅在初始加载时进行绑定 - 两种方式都存在相同的问题。
如何使用户控件跨postbacks保留int值?
1个回答

5
你尝试过将值放在视图状态中吗?
public string Id{
    get
    {
        return this.ViewState["Value"] == null ?
            0 :
            (int)this.ViewState["Value"];
    }
    set { this.ViewState["Value"] = value; }
}

是的,我认为您已经正确地确定了原因和解决方案。 - Cerebrus
谢谢!那个方法起作用了。你有什么想法为什么我需要在repeater中对控件进行这样的操作,但是在它之外相同的控件可以正常工作吗? - azollman
控件中的私有成员变量不会作为视图状态的一部分进行序列化,因此在回发时不会被恢复。如果您想在视图状态中保留私有变量,则上述解决方案是正确的。另一个选项是使用隐藏文本框,这样它就会自动恢复。 - DancesWithBamboo
哎呀,有没有一种方法可以绑定用户控件 - 我现在正在寻找它,我确定上次做网络魔法时用过它。不知道是 OnItemDataBind 还是其他什么方式。 - zzzuperfly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接