C# 在完成页面加载之前访问控件值

C# 在完成页面加载之前访问控件值,c#,asp.net,C#,Asp.net,我有个问题,想知道是否有人能帮我 我正在创建一个包含一些控件的表,我想在每次回发中保存所有控件值。由于控件是在页面加载后才定义的,因此我无法通过以下方式解决问题: object o; protected void Page_Load(object sender, EventArgs e) { o = createObject(); Create_Table(); if (Page.IsPostBack) Save_Data(); } 我认为我可以在每次回发事件开始时执行Sa

我有个问题,想知道是否有人能帮我

我正在创建一个包含一些控件的表,我想在每次回发中保存所有控件值。由于控件是在页面加载后才定义的,因此我无法通过以下方式解决问题:

object o;
protected void Page_Load(object sender, EventArgs e)
{
 o = createObject();
    Create_Table();
 if (Page.IsPostBack)
    Save_Data();
}
我认为我可以在每次回发事件开始时执行Save_Data(),但我认为应该有更好的方法来解决我的问题


谢谢。

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


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


查看我的答案

既然您希望它位于页面级别,为什么不使用ViewState?由于o似乎总是使用相同的数据进行设置,因此可能不需要再设置一次,但是如果您真的想要,您可以删除if not postback内容

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();
}

既然您希望它处于页面级别,为什么不使用ViewState?由于o似乎总是使用相同的数据进行设置,因此可能不需要再设置一次,但是如果您真的想要,您可以删除if not postback内容

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();
}

问题是:我不希望对象作为会话变量,我更喜欢在每次加载页面时创建它。该对象是基于一些文件创建的,其主要功能是:给出表的结构和存储表的值。表总是具有相同的结构,但其值可能会有所不同,我希望在发生任何事情之前将新值保存在文件中。问题是:我不希望对象作为会话变量,我更希望在每次加载页面时都创建它。该对象是基于一些文件创建的,其主要功能是:给出表的结构和存储表的值。该表将始终具有相同的结构,但其值可能会有所不同,我希望在发生任何事情之前将新值保存到文件中。