在aspx页面的partial类中创建一个类的实例。在page_load或按钮单击方法下我试图将值设置为类。但是当每次回发发生时,都会创建新实例并且我将丢失之前的值。
public partial class DatabaseSelection : System.Web.UI.Page
{
DBProperties dbpro;
Metadata obmeta;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dbpro = new DBProperties();
}
答案 0 :(得分:3)
如果您需要应用程序将此实例抛出应用程序或使用Singleton集合:
Application [“Foo”] = new MyClass(); 见其他答案。
如果您需要单个请求(这似乎不太可能):
HttpContext.Current.Items [“Foo”] = new MyClass();
如果您需要跨请求,则以下是所有选项,具体取决于您的方案:
我不确定我会推荐Singleton模式。只要你的AppDomain有效地类似于Application变量,技术上单身就会坚持下去。
答案 1 :(得分:2)
您在寻找Singleton pattern吗?
答案 2 :(得分:1)
只需创建一个访问会话状态的方法,并尝试返回它,如果它已经存在的话。如果没有,它会创建它,将它存储在会话中,然后返回它。
答案 3 :(得分:1)
如果您希望对象在回发之间保留,则需要将其存储在会话/视图状态中,或者将其保存到数据库中。