Asp.net 如何在页面上单击按钮后维护类
我在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
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会话中的持久化数据。