如何让一个自定义类在PostBack的时候不被重新实例化?
我在外部写
clsSub sub = new clsSub();
这样,每次提交页面的时候,sub就会被重新初始化
[解决办法]
- C# code
if(!PostBack){clsSub sub = new clsSub();}
[解决办法]
if (Page.IsPostBack != true) {
// Do processing
}
[解决办法]
lz的问题很有意思,我想问问lz当new一个clsSub()会分配空间么?
如果会分配空间,分配多大,为什么????
要是搞懂的话,这样的问题就迎刃而解了
[解决办法]
点击按钮的时候再实例化不行吗,用完了就释放
clsSub sub = new clsSub();
过程.........
sub=null
[解决办法]
可以用viewstate[""]
你用的是字符串么?
[解决办法]
好像除了session没别的东西,用持久化,换汤不换药,也是session
个人见解,看看别人怎么说
[解决办法]
http://www.qqgb.com/NetProgramme/ASPNet/aspnetdatabase/NetProgramme_124932.html
------------------------------
一篇介绍nhibernate的文章。
怎么说那,包装了数据访问+session,不过session换了名了叫做会话工厂,微软真是够搞笑!
[解决办法]
放SESSION或者VIEWSTATE,在存入SESSION或VIEWSTATE之前将对象序列化
clsSub sub = null;
if (!Page.IsPostback)
{
sub = new clsSub();
}
else
{
sub = ViewState["YOUR_OBJ_NAME"];
}
[解决办法]
学习
顺便接个分
[解决办法]
static
[解决办法]
如果楼主的意思是想提高性能,那么直接用缓存就得了.
[解决办法]
if (!Page.IsPostback)
{
sub = new clsSub();
}
[解决办法]
我想知道除了VS和SESSION外,是否还有别的办法实现呢
---------------
类实例必须序列化保存...原因...你去看看HTTP协议和ASP.NET页面生存周期都是怎么回事就明白了...
[解决办法]
xue xi
[解决办法]
缓存可以
[解决办法]
!PostBack这个属性
[解决办法]
if(!PostBack)
{
clsSub sub = new clsSub();
}
[解决办法]
在网上搜下"单例模式"
[解决办法]
没有办法,不知道.
[解决办法]
mark
[解决办法]
public static SampleSingleton2 Singleton
{
get
{
if (m_Instance == null)
{
lock (typeof(SampleSingleton2))
{
if (m_Instance == null)
{
m_Instance = new SampleSingleton2();
}
}
}
return m_Instance;
}
}
[解决办法]
学习下
[解决办法]
!IsPostBack属性就OK
[解决办法]
IsPostBack
[解决办法]
变通的办法还是有的,比如Cache
单键模式在这里不解决问题
[解决办法]
学习下
[解决办法]
还是Cache吧
[解决办法]
如果这不是很耗费资源的东西,就不要管了,让它创建一个势力吧。否则你就不要用.NET了,.NET的资源回收都是GC管,真正高效还是手动管理。
[解决办法]
可以定义为静态类啊,这样不就只初始化一次了
[解决办法]
对于有经验的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时再读取出来。
[解决办法]
对于对象持久化系统例子:hibernate、Linq(to SQL等)、db4o,等等。从你需要写3000行配置信息才能存取对象,到一行代码就可以方便地存取对象,他们的能力、性能、方便性各不相同。但是你至少需要精通一两种。
[解决办法]
通过理解web服务器、asp.net系统的机制,可以分析出这个结论:选用所谓的“持久化”系统是不得不掌握的技术。
将对象保存在磁盘上(当然你可以自己编写ORM系统),以及使用 viewstate 将对象(通常仅保存简单对象,例如值类型的数据)保存在网页上这其实都是持久化系统。