如何将委托存储在ViewState中
我随便声明一个委托
[Serializable]
public delegate int processSaveHead();
然后想这样存储在ViewState中
public processSaveHead SaveHead
{
get
{
if (ViewState["SaveHead"] == null)
{
processSaveHead temp = new processSaveHead(somenewmethiod);
ViewState["SaveHead"] = temp;
}
return (processSaveHead)ViewState["SaveHead"];
}
set
{
ViewState["SaveHead"] = value;
}
}
但页面报错:must be marked as Serializable or have a TypeConverter other than ReferenceConverter to be put in viewstate。
请问如果将这个delegate存储到ViewState中,普通的实体类是可以这样存进去的。如果真能解我之惑,我还会加分!
问题点数:30、回复次数:5Top
1 楼saucer(思归)回复于 2005-08-02 00:39:46 得分 10
即使有了Serializable,并不表明系统知道怎么持久你的对象,因为delegate不是一个简单的对象,它类似function pointer。
先问问你自己,你为什么要把这样的东西存在ViewState里?Top
2 楼zhilunchen(他山居士)回复于 2005-08-02 01:08:10 得分 10
估计用ViewState无法实现!为什么要保存委托啊?根据你的目的想其它办法吧!Top
3 楼bingbingcha(不思不归,不孟不E,原来是头大灰狼)回复于 2005-08-02 08:27:16 得分 10
为什么要保存委托呢??换个思路解决你的问题Top
4 楼bit01(卷土重来)回复于 2005-08-02 09:31:17 得分 0
谢谢楼上各位,确实可以不用,我想将一个委托传给一个自定义控件调用。
如果不放在ViewState中的话,每次点击自定义控件中的按钮时,委托就会丢掉。
我现在可以通过回发事件的方法解决,不过需要在使用自定义控件的页面加载这个事件。
如果能放在ViewState中时,委托就不会丢掉,页面就不需要加载任何事件,这样代码看起来也美观。
这就是我的主要意图,您们看这样可行吗?
Top
5 楼englam(peter)回复于 2005-08-30 17:05:11 得分 0
我试过把类放到ViewState中。关于委托。 没有试过。Top




