Web用户控件(WebUserControl)嵌套问题-别忘了注册子用户控件

来源:互联网 发布:js调用客户端应用程序 编辑:程序博客网 时间:2024/06/05 02:24

问题:

1.创建了一个Web用户控件,YearMonth。 该控件包含两个下拉框,用于选择年月。

该控件有一个方法GetValue(),返回年月的字符串比如"200801"。

2.创建第二个Web用户控件,YearMonthSpan。该控件包含两个YearMonth控件。用于时间段的查询。

该控件有两个属性StartYearMonth,EndYearMonth,返回YearMonth类型的用户控件。就是1中创建的控件类型。

3.在一个aspx页面中拖入一个YearMonthSpan。在页面代码中试图写一下代码:

YearMonthSpan.StartYearMonth.GetValue()出现问题。

事实上,在写到YearMonthSpan.StartYearMonth.的时候,编辑器的智能感知功能并没有列出YearMonth的成员。但是编译却没有报错。运行该页面(在浏览器中打开)出现编译错误信息:

在未被引用的程序集中定义。必须添加对程序集***的引用。

难道是用户控件不支持嵌套吗?其实是因为页面使用用户控件必须先注册,用户代码中使用了YearMonth,但是却没有在页面中注册。只要把控件拖到页面中。查看源文件中,会多出一个注册语句

<%@ Register Src="../../Common/WebControls/WUC_YearMonth.ascx" TagName="WUC_YearMonth"
    TagPrefix
="uc2" %>

把这句加进去就可以了。

因此友情提醒:使用嵌套用户控件时,别忘了注册被嵌套的子用户控件。

原创粉丝点击