带有内容模板的ASP.NET自定义控件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了带有内容模板的ASP.NET自定义控件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1693字,纯文字阅读大概需要3分钟。
内容图文
![带有内容模板的ASP.NET自定义控件](/upload/InfoBanner/zyjiaocheng/657/739907e74f6b4a8e8df0ec63fe3e13ba.jpg)
我为公司的需要在ASP.NET 3.5中创建LoginView ASP.NET控件的“克隆”,我试图了解它如何实现在不同模板中设置具有相同ID的控件的功能.
例如,这是带有LoginView控件的ASPX标记:
<asp:LoginView ID="lv" runat="server">
<AnonymousTemplate>
<asp:Label ID="lbl" runat="server" />
</AnonymousTemplate>
<LoggedInTemplate>
<asp:Label ID="lbl" runat="server" />
</LoggedInTemplate>
</asp:LoginView>
这是有效的标记,页面工作正常.
现在,我创建了自定义控件:
[ParseChildren(true)]
[PersistChildren(false)]
public class ContentControl : Panel
{
[PersistenceMode(PersistenceMode.InnerProperty)]
public PlaceHolder AnonymousView { get; set; }
[PersistenceMode(PersistenceMode.InnerProperty)]
public PlaceHolder LoggedinView { get; set; }
public ContentControl()
{
this.Init += new EventHandler(ContentControl_Init);
}
void ContentControl_Init(object sender, EventArgs e)
{
if (AnonymousView == null)
{
AnonymousView = new PlaceHolder();
}
if (LoggedinView == null)
{
LoggedinView = new PlaceHolder();
}
this.Controls.Add(AnonymousView);
this.Controls.Add(LoggedinView);
AnonymousView.ID = "AnonymousView";
LoggedinView.ID = "LoggedinView";
AnonymousView.Visible = !MyContext.IsLogged;
LoggedinView.Visible = MyContext.IsLogged;
}
}
现在,当我将控件与下面的标记一起使用时,我收到以下错误:ID为“ lbl”的控件在页面上存在多次:
<TL:ContentControl ID="c" runat="server" CssClass="dd">
<AnonymousView>
AnonymousView
<asp:Label ID="lbl" runat="server" />
</AnonymousView>
<LoggedinView>
LoggedinView
<asp:Label ID="lbl" runat="server" />
</LoggedinView>
</TL:ContentControl>
如何允许两个模板中具有相同ID的控件?
解决方法:
您需要开发模板控件:Building Templated Custom ASP.NET Server Controls
并使用实现INamingContainer的控件作为模板容器:Use TemplateInstance.Single to avoid FindControls
内容总结
以上是互联网集市为您收集整理的带有内容模板的ASP.NET自定义控件全部内容,希望文章能够帮你解决带有内容模板的ASP.NET自定义控件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。