在ASP.NET 1.x运行正常的自定义控件,在VS2005和 ASP.NET 2.0中出现问题,疑是VS2005的Bug一个。
Ivony 2006-02-27 10:23:33 ParseChildrenAttribute构造函数有两个参数,第一个是指示将标签内内容解释成为属性还是子控件,第二个是默认属性。
[ParseChildren( true, "Content" )]
class .....
{
//....
public ITemplate Content
{
get;set;//.....
}
}
在ASP.NET 1.x下,这样做是正常的,没有任何问题。
但在ASP.NET 2.0下,VS2005报告在控件的标签之间不能插入任何信息,并认为控件标签是自封闭的:< .... />。事实上加上ContainerDesigner之后,仍然是可以在设计视图设计的,设计完后也会在标签之间插入内容,但如果在源视图和设计视图之间切换就会出问题。
但即使这样,强行运行也没有问题,所以怀疑是VS2005的Bug。
如果将ParseChildren的第一个参数改为false,甚至是把第二个参数指向一个不存在的属性,就都没问题了(当然,只是指设计没问题了)。
并且,VS2005认为在控件的标签之间(即默认为Content属性),不能使用绑定表达式:<%# ... %>。TemplateContainer属性设置是正确的。
即使强行这样写,也会在运行时出现页面编译错误。
发现这一次发布的VS2005问题好多。
出现问题的环境为:
Visual Studio 2005 Team Suite RTM……