在完成Page_Load之前访问控件值

时间:2010-06-16 21:27:55

标签: c# asp.net

我遇到了问题,想知道是否有人可以帮助我。

我正在创建一个包含一些控件的表,我想在每个回发中保存所有控件值。由于控件刚刚在page_load之后定义,我无法通过这种方式解决我的问题:

object o;
protected void Page_Load(object sender, EventArgs e)
{
 o = createObject();
    Create_Table();
 if (Page.IsPostBack)
    Save_Data();
}

我以为我可以在每个回发事件开始时执行Save_Data(),但我认为这应该是解决问题的更好方法。

感谢。

2 个答案:

答案 0 :(得分:1)

既然您希望它在页面级别,为什么不使用ViewState?由于o似乎总是设置相同的数据,因此可能不需要将其设置多一次,但如果你真的想要,你可以删除if if backback的东西......

protected object o
{
    get {
        return ViewState["o"];
    }
    set {
        ViewState["o"] = value;
    }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack) { o = createObject(); }        
    Create_Table();
    if (Page.IsPostBack)
        Save_Data();
}

答案 1 :(得分:0)

回发完成后,您的变量“o”将不包含原始值。这是因为每个请求都会在服务器上创建一个新的页面对象,并且您的成员变量值将丢失。最好使用内置的“Session”属性在请求之间保存数据。

请参阅我的回答here