首页 新闻 赞助 找找看

请教自定义服务器控件编译时错认为原有控件类

0
悬赏园豆:80 [已解决问题] 解决于 2009-12-05 09:00

由于业务需求,想把Label对象 放入到ViewState中,可是由于
System.Web.UI.WebControls.Label”未标记为可序列化。

经查决定用新建服务器控件的方式来实现。
由于我只是想添加可序列化

 

Code

建完编译后一切正常,完全和Label一样。


可是当使用控件时
MyLabel newLabel = new MyLabel();
ViewState["test"] = newLabel;

可是编译时居然把新建的控件错认为是“System.Web.UI.WebControls.Label”

程序集“System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中的类型“System.Web.UI.WebControls.Label”未标记为可序列化。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Runtime.Serialization.SerializationException: 程序集“System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中的类型“System.Web.UI.WebControls.Label”未标记为可序列化。

问题补充: DLL已经引用了,控件与Label一样,使用没问题。就是放入视图状态时不行 MyLabel newLabel = new MyLabel(); ViewState["test"] = newLabel; web.config 如下 <?xml version="1.0"?> <configuration> <appSettings/> <connectionStrings/> <system.web> <compilation debug="true"/> <authentication mode="Windows"/> <pages> <tagMapping> <add tagType= "System.Web.UI.WebControls.MyLabel" mappedTagType= "WebControlLibrary1, WebControlLibrary1.dll, Version='2.0.0.0'" /> </tagMapping> </pages> </system.web> </configuration> 提示:未能加载类型“System.Web.UI.WebControls.MyLabel”
ufo20020427的主页 ufo20020427 | 初学一级 | 园豆:29
提问于:2009-11-23 15:26
< >
分享
最佳答案
0

  可序列化: 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.

 你的Label又不是程序集合。这是会报错的。如果你想用的话。来给你举个例子:

[Serializable]

private int id;

public int Id

{

    set { id = value; }
        get { return id; }

}

private string name

public string Name

{

  set {name = value;}

      get {return name;}

}

收获园豆:30
boboisboy | 菜鸟二级 |园豆:346 | 2009-11-23 15:58
谢谢! 不过如果想把Label对象 放入到ViewState中,是不是肯定没有办法的了?
ufo20020427 | 园豆:29 (初学一级) | 2009-11-24 09:12
viewstate用来保存状态,包括页面本身.它是用于页面提交的。lable控件你再看看有问题么
boboisboy | 园豆:346 (菜鸟二级) | 2009-11-24 10:20
其他回答(1)
0

 这个你可以设置web.config中tagMapping 节点

http://msdn.microsoft.com/en-us/library/ms164641.aspx

http://blogs.msdn.com/mattgi/archive/2007/01/23/asp-net-ajax-validators.aspx

添加到<system.web></system.web>节点中

另外,你添加的这个控件dll应该是在项目中引用了的

收获园豆:50
persialee | 园豆:3217 (老鸟四级) | 2009-11-24 12:38
@siso: 添加到<system.web></system.web>节点中 具体是报什么错?
支持(0) 反对(0) persialee | 园豆:3217 (老鸟四级) | 2009-11-27 12:57
@siso:另外,你添加的这个控件dll应该是在项目中引用了的
支持(0) 反对(0) persialee | 园豆:3217 (老鸟四级) | 2009-11-27 12:59
@persialee: 请看问题补充。谢谢!
支持(0) 反对(0) ufo20020427 | 园豆:29 (初学一级) | 2009-12-01 16:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册