Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在页面上单击按钮后维护类_Asp.net_Webforms_Buttonclick - Fatal编程技术网

Asp.net 如何在页面上单击按钮后维护类

Asp.net 如何在页面上单击按钮后维护类,asp.net,webforms,buttonclick,Asp.net,Webforms,Buttonclick,我在ASP.NET中有一个页面,当我访问它时,通过编程在文本框中设置一个值。当我点击按钮时,我想更新该值,但它给了我错误: 对象未定义 这是我的密码: public partial class InsertValues : System.Web.UI.Page { DataProvider dataProvider = new DataProvider(); // This class contains all the querys I need to pull data

我在ASP.NET中有一个页面,当我访问它时,通过编程在文本框中设置一个值。当我点击按钮时,我想更新该值,但它给了我错误:

对象未定义

这是我的密码:

public partial class InsertValues : System.Web.UI.Page
    {
        DataProvider dataProvider = new DataProvider(); // This class contains all the querys I need to pull data

        public MyValuesClass myValues; // This is my class where I get the data from my DB

        protected void Page_Load(object sender, EventArgs e)
        {   
            if (!IsPostBack)
            {      
                startMyPage();  // Function that gets the values from the DataBase and sets my TextBox with the values.
            }
            else
            {

            }
        }

private void startMyPage()
        {
            myValues = dataProvider.getValuesFromDB(); // Function that gets the values from a query and put them in my class, the values are. String "Banana" and Bool isNew = True

            if (!myValues.isNew) // 
            {
                txtFood.Text = myValues.food
            }
            else
            {
                myValues= new myValues();
                myValues.isNew = true;
            }
        }

protected void btnSave_Click(object sender, EventArgs e)
        {
            if (myValues.isNew) // Object not defined. 
            {
                 dataProvider.addMyValues(myValues); // It Inserts into my DB
            }
            else
            {
                 dataProvider.editMyValues(myValues); // It Updates into my DB
            }
        }
    }

基本上,当我点击我的“btnSave”后,类myValues变为空,并且我得到了未定义的错误对象,有没有办法维护类值?

您需要在回发时重新提取
myValues
对象

protected void Page_Load(object sender, EventArgs e)
{   
    if (!IsPostBack)
    {      
        startMyPage();
    }
    else
    {
        myValues = dataProvider.getValuesFromDB();
    }
}
只有存储在ViewState或等效持久化机制中的数据才会保留在初始页面加载和回发之间,这就是为什么webforms页面控件的值会持久化,而代码隐藏属性不会持久化的原因


您可以在ViewState中手动存储如下内容:
ViewState[“someKey”]=someObject,但是
someObject
必须是可序列化的。看起来
myValues
是ORM对象,因此它可能不可序列化。

您需要在回发时重新提取
myValues
对象

protected void Page_Load(object sender, EventArgs e)
{   
    if (!IsPostBack)
    {      
        startMyPage();
    }
    else
    {
        myValues = dataProvider.getValuesFromDB();
    }
}
只有存储在ViewState或等效持久化机制中的数据才会保留在初始页面加载和回发之间,这就是为什么webforms页面控件的值会持久化,而代码隐藏属性不会持久化的原因


您可以在ViewState中手动存储如下内容:
ViewState[“someKey”]=someObject,但是
someObject
必须是可序列化的。看起来
myValues
是一个ORM对象,因此它可能不可序列化。

所有变量都会在每次回发时重新启动。您最好将类的公共myValues类myValues存储在session或viewstate中。

所有变量都会在每次回发时重新启动。你最好将你的类公共myValues类myValues存储在会话或视图状态中。

是的,我错过了这一部分,非常感谢。我只想再问你一件事,关于初始页面加载和回发之间只保留ViewState或等效持久性机制中存储的数据,我想了解更多信息,你能给我提供一个链接吗?那太好了。很乐意帮忙。我没有任何具体的链接。尝试用谷歌搜索ASP.NETWebForms、ViewState和ASP.NET会话中的持久化数据。是的,我错过了这一部分,非常感谢。我只想再问你一件事,关于初始页面加载和回发之间只保留ViewState或等效持久性机制中存储的数据,我想了解更多信息,你能给我提供一个链接吗?那太好了。很乐意帮忙。我没有任何具体的链接。尝试用谷歌搜索ASP.NETWebForms、ViewState和ASP.NET会话中的持久化数据。