点击页面按钮后如何保持class
How to maintain class after button click on page
我在 ASP .NET 中有一个页面,当我访问它时,我以编程方式在 TextBox 中设置了一个值。当我点击按钮时,我想更新那个值,但它给我错误:
Object not defined
这是我的代码:
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" 后,class myValues 变为空,我收到错误消息 Object not defined ,有没有办法保持 class 值?
您需要在 PostBack 上重新获取 myValues
对象。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
startMyPage();
}
else
{
myValues = dataProvider.getValuesFromDB();
}
}
只有存储在 ViewState 或等效持久性机制中的数据将保留在初始页面加载和 post 返回之间,这就是为什么您的 webforms 页面控件的值被持久化,但您的代码隐藏 属性 不是。
您可以像这样在 ViewState 中手动存储内容:ViewState["someKey"] = someObject;
,但 someObject
必须是可序列化的。看起来 myValues
是一个 ORM 对象,所以它 可能 不可序列化。
所有变量在每 post 后重新启动。您最好将 class public MyValuesClass myValues 存储在会话或视图状态中。
我在 ASP .NET 中有一个页面,当我访问它时,我以编程方式在 TextBox 中设置了一个值。当我点击按钮时,我想更新那个值,但它给我错误:
Object not defined
这是我的代码:
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" 后,class myValues 变为空,我收到错误消息 Object not defined ,有没有办法保持 class 值?
您需要在 PostBack 上重新获取 myValues
对象。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
startMyPage();
}
else
{
myValues = dataProvider.getValuesFromDB();
}
}
只有存储在 ViewState 或等效持久性机制中的数据将保留在初始页面加载和 post 返回之间,这就是为什么您的 webforms 页面控件的值被持久化,但您的代码隐藏 属性 不是。
您可以像这样在 ViewState 中手动存储内容:ViewState["someKey"] = someObject;
,但 someObject
必须是可序列化的。看起来 myValues
是一个 ORM 对象,所以它 可能 不可序列化。
所有变量在每 post 后重新启动。您最好将 class public MyValuesClass myValues 存储在会话或视图状态中。