我在外部写clsSub sub = new clsSub();这样,每次提交页面的时候,sub就会被重新初始化

解决方案 »

  1.   


    if(!PostBack)
    {
    clsSub sub = new clsSub();
    }
      

  2.   

    public partial class SDO : System.Web.UI.Page
    {
       clsSub sub;
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack){
                sub=new clsSub();
            }
        }
    }这样还是会被重新初始化啊
      

  3.   

    if (Page.IsPostBack != true) {
    // Do processing
    }
      

  4.   

    但是这样的话,我在Button事件中就没办法调用到这个sub了,只能重新实例化一样
      

  5.   

    if   (Page.IsPostBack   !=   true)   { 
    //   Do   processing 
    }和if(!IsPostBack)有区别吗?
      

  6.   

    lz的问题很有意思,我想问问lz当new一个clsSub()会分配空间么?
    如果会分配空间,分配多大,为什么????要是搞懂的话,这样的问题就迎刃而解了
      

  7.   

    点击按钮的时候再实例化不行吗,用完了就释放
    clsSub   sub   =   new   clsSub(); 
    过程.........
    sub=null
      

  8.   

    因为我要用到sub中的一个东西,而这个东西必须在同一个页面中共用,目前我是用SESSION方式保存的,只是想知道是否有别的更好的方法实现.
      

  9.   

    可以用viewstate[""]你用的是字符串么?
      

  10.   

    好像除了session没别的东西,用持久化,换汤不换药,也是session个人见解,看看别人怎么说
      

  11.   

    http://www.qqgb.com/NetProgramme/ASPNet/aspnetdatabase/NetProgramme_124932.html
    ------------------------------------------------------------------
    一篇介绍nhibernate的文章。
    怎么说那,包装了数据访问+session,不过session换了名了叫做会话工厂,微软真是够搞笑!
      

  12.   

    放SESSION或者VIEWSTATE,在存入SESSION或VIEWSTATE之前将对象序列化
    clsSub sub = null;
    if (!Page.IsPostback)
    {
        sub = new clsSub();
    }
    else
    {
        sub = ViewState["YOUR_OBJ_NAME"];
    }
      

  13.   

    我想知道除了VS和SESSION外,是否还有别的办法实现呢
      

  14.   

    if   (!Page.IsPostback) 

            sub   =   new   clsSub(); 

      

  15.   

    我想知道除了VS和SESSION外,是否还有别的办法实现呢
    ---------------
    类实例必须序列化保存...原因...你去看看HTTP协议和ASP.NET页面生存周期都是怎么回事就明白了...
      

  16.   

    if(!PostBack)
    {
    clsSub sub = new clsSub();
    }
      

  17.   

    public static SampleSingleton2 Singleton
          {
             get
             {
                if (m_Instance == null)
                {
                   lock (typeof(SampleSingleton2))
                   {
                      if (m_Instance == null)
                      {
                         m_Instance = new SampleSingleton2();
                      }
                   }
                }            return m_Instance;
             }
          }
      

  18.   

    变通的办法还是有的,比如Cache
    单键模式在这里不解决问题
      

  19.   

    !IsPostBack没用,因为我要在同一页面中的不同过程调用这个类vrhero 可否给个连接看看呢
      

  20.   

    Cache的保存性质是像APPLICATION还是SESSION?
      

  21.   

    如果这不是很耗费资源的东西,就不要管了,让它创建一个势力吧。否则你就不要用.NET了,.NET的资源回收都是GC管,真正高效还是手动管理。
      

  22.   

    静态类不是变成了所有用户用的是同一个类实例了?我现在是想让每个用户有个单独的实例,但是因为在POSTBACK的时候或是新的页面的时候需要用到这个类实例..
      

  23.   

    对于有经验的asp.net开发人员,请不要使用cache来“解决”这个问题。并且也尽量不要使用静态对象、Session、Application等。Cache是由它自己的原则(例如内存是否够用、时间是否够长)来决定消灭所保存的对象的。保存在cache中对象必须是“备份”,并且你从cache中查询不到对象时必须可以从数据库等其它地方重建一份。使用session、application的问题则出在web应用的整体结构上。如果你修改web.config、或者app_code目录下的代码文件,以及iis自身管理需要(例如内存少、收回应用程序缓冲池)等等,web应用程序都会重新启动。如果客户端访问网站,在网页上触发令一个操作之前网站重新应用启动了,客户端感觉不出来,可以继续访问同一个网页。如果你把数据保存在session、application上,那么就会运行中出错。如果租用服务器就会看得很明显,你的应用程序很可能每隔十几分钟,session、application中的数据就“丢失”了。在自己本地pc上开发web软件的时候,本地pc的环境实在是太“理想化”了。如果缺乏系统上线经验,容易忽略真正去测试程序能否生存在有压力的web服务器上。你如果不能选择一种很好的对象持久化系统,那么就不要持久化它。你只能把 sub 只向的对象的数据在page_unload时写入数据库,在page_load时再读取出来。
      

  24.   

    对于对象持久化系统例子:hibernate、Linq(to SQL等)、db4o,等等。从你需要写3000行配置信息才能存取对象,到一行代码就可以方便地存取对象,他们的能力、性能、方便性各不相同。但是你至少需要精通一两种。
      

  25.   

    通过理解web服务器、asp.net系统的机制,可以分析出这个结论:选用所谓的“持久化”系统是不得不掌握的技术。将对象保存在磁盘上(当然你可以自己编写ORM系统),以及使用 viewstate 将对象(通常仅保存简单对象,例如值类型的数据)保存在网页上这其实都是持久化系统。