代码如下:<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TextLink.ascx.cs" Inherits="PoEB.Web.Controls.TextLink" %>
<asp:PlaceHolder ID="PlaceHolder1"  runat="server" />
后台 public partial class TextLink  : System.Web.UI.UserControl
    {
        /// <summary>
        /// 商品调用位ID
        /// </summary>
        [Browsable(true),
        Description("商品调用位ID")]
        public int SpaceID
        {
            get;
            set;
        }        /// <summary>
        /// 显示数量
        /// </summary>
        [Browsable(true),
        Description("显示数量")]
        public int Number
        {
            get;
            set;
        }
               
        private ITemplate _template = null;
        [TemplateContainer(typeof(ItemContainer))]
        [Description("链接模板")]
        [PersistenceMode(PersistenceMode.InnerDefaultProperty)]
        public ITemplate Template
        {
            get
            {
                return _template;
            }
            set
            {
                _template = value;
            }
        }        protected void Page_Load(object sender, EventArgs e)
        {
            DataBind();
        }        void Page_Init()
        {
            if (Template != null && SpaceID > 0 && Number > 0)
            {
                BLL.WebSpaceLink bllWebSpaceLink = new BLL.WebSpaceLink();
                List<Model.WebSpaceLink> list = bllWebSpaceLink.GetListFromCache(SpaceID, Number);
                if (list != null)
                {
                    int i = 0;
                    foreach (Model.WebSpaceLink model in list)
                    {
                        ItemContainer container = new ItemContainer(i, model.LinkText,model.LinkUrl,model.Target);
                        _template.InstantiateIn(container);
                        PlaceHolder1.Controls.Add(container);
                        i++;
                    }
                }            }
        }
        public class ItemContainer : Control, INamingContainer
        {
            private int _index;
            private string _text;
            private string _url;
            private string _target;
            internal ItemContainer(int index, string text,string url,string target)
            {
                _index = index;
               _text = text;
               _url = url;
                _target = target;
            }            /// <summary>
            /// 友情链接ID
            /// </summary>
            [Description("链接文本")]
            [Bindable(true)]
            public string LinkText
            {
                get { return _text; }
            }            /// <summary>
            /// 网站名称
            /// </summary>
            [Description("链接网址")]
            [Bindable(true)]
            public string LinkUrl
            {
                get { return _url; }
            }            /// <summary>
            /// 打开窗口类型
            /// </summary>
            [Description("打开窗口类型")]
            [Bindable(true)]
            public string Target
            {
                get { return _target; }
            }            /// <summary>
            /// 数据索引顺序.
            /// </summary>
            [Description("数据索引顺序")]
            [Bindable(true)]
            public int ItemIndex
            {
                get { return _index; }
            }
        }     }
调用如下:<%@ Register TagPrefix="uc6" TagName="LinkText" Src="~/Controls/LinkText.ascx" %>
<uc6:LinkText runat="server" ID="LinkText1">
            <Template>
            </Template>
</uc6:LinkText>始终无法显示任何东西
第一次弄自定义控件
是自定义控件的问题 还是调用方法不正确!绑顶有分

解决方案 »

  1.   

     <Template>
                </Template> 这里面你什么都还没有写。
      

  2.   

       BLL.WebSpaceLink bllWebSpaceLink = new BLL.WebSpaceLink();
                    List<Model.WebSpaceLink> list = bllWebSpaceLink.GetListFromCache(SpaceID, Number);
                    if (list != null)
                    {
                        int i = 0;
                        foreach (Model.WebSpaceLink model in list)
                        {
                            ItemContainer container = new ItemContainer(i, model.LinkText,model.LinkUrl,model.Target);
                            _template.InstantiateIn(container);
                            PlaceHolder1.Controls.Add(container);
                            i++;
                        }
                    }
    确定里面有值吗
      

  3.   

    SpaceID   Number   这两属性 都给上值  
    这没赋值
    int的默认值是0
    那个if肯定不进去啊。
    if (Template != null && SpaceID > 0 && Number > 0) 
    还有这个事件确定页面加载时调用了吧我对WEBFROM不是太了解
     void Page_Init()
      

  4.   

    我调试过 Page_Init() 调用了
      

  5.   

    你描述的问题太不清晰了。
    其实自定义控件和服务器控件的使用是一样的,唯一区别的就是添加引用,上面你已经添加了。
    使用的时候就是要给控件设定属性值,我看到你有一个number属性
    LinkText1.number=;
    其他属性也要设定,你这里什么也没有设定,它必然是不显示的。
      

  6.   


    <uc5:TextLink runat="server" ID="TextLink1" SpaceID="102" Number="10">
               <Template>
               <--问的是这个里面该怎么写才行-->
               </Template>
            </uc5:TextLink>
      

  7.   

    <uc5:TextLink runat="server" ID="TextLink1" SpaceID="102" Number="10">
               <Template>
               <%# Container.LinkText%>
               </Template>
            </uc5:TextLink>