首页 新闻 会员 周边

asp.net 用户控件调用问题

0
悬赏园豆:30 [已解决问题] 解决于 2012-08-29 15:15

自定义控件代码如下

<%@ 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="uc2" TagName="TextLink" Src="~/Controls/TextLink.ascx" %>

<uc2:TextLink runat="server" ID="txtlk" SpaceID="102" Number="10">
        <Template>
            <%--这里该如何写--%>
        </Template>
    </uc2:TextLink>
问题补充:

来个人啊

暗尘掩月的主页 暗尘掩月 | 初学一级 | 园豆:183
提问于:2012-08-27 17:23
< >
分享
最佳答案
1

<%# Container.LinkText%>

收获园豆:30
bcacyy | 初学一级 |园豆:40 | 2012-08-29 15:14
其他回答(2)
0

要用自定义控件吧。

向往-SONG | 园豆:4853 (老鸟四级) | 2012-08-27 17:42
0

把这文件直接拉到要使用的页面就可以

jason2013 | 园豆:1998 (小虾三级) | 2012-08-28 10:07

问题看清楚再回答好不

支持(0) 反对(0) 暗尘掩月 | 园豆:183 (初学一级) | 2012-08-28 18:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册