代码如下:<%@ 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>始终无法显示任何东西
第一次弄自定义控件
是自定义控件的问题 还是调用方法不正确!绑顶有分
<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>始终无法显示任何东西
第一次弄自定义控件
是自定义控件的问题 还是调用方法不正确!绑顶有分
</Template> 这里面你什么都还没有写。
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++;
}
}
确定里面有值吗
这没赋值
int的默认值是0
那个if肯定不进去啊。
if (Template != null && SpaceID > 0 && Number > 0)
还有这个事件确定页面加载时调用了吧我对WEBFROM不是太了解
void Page_Init()
其实自定义控件和服务器控件的使用是一样的,唯一区别的就是添加引用,上面你已经添加了。
使用的时候就是要给控件设定属性值,我看到你有一个number属性
LinkText1.number=;
其他属性也要设定,你这里什么也没有设定,它必然是不显示的。
<uc5:TextLink runat="server" ID="TextLink1" SpaceID="102" Number="10">
<Template>
<--问的是这个里面该怎么写才行-->
</Template>
</uc5:TextLink>
<Template>
<%# Container.LinkText%>
</Template>
</uc5:TextLink>