在. aspx上自定义用户控件和友好属性项集合(类似于ListBox和listtitems,但带有List
本文关键字:listtitems ListBox Class List 类似于 集合 用户 自定义 aspx 控件 属性 | 更新日期: 2023-09-27 18:18:46
我一直想知道很长一段时间如何为用户控件做一个公共属性,工作就像。net原生项目的集合属性(例如,ListBox和listtitems):
<asp:ListBox blablabla>
<asp:ListItem></asp:ListItem> <- Inline item collection...
</asp:ListBox>
我一直在网上检查,但没有任何成功。我认为它必须是任何类型的属性,我需要添加到属性,或接口,应该需要由用户控制继承,但没有线索,并一直在考虑它很长一段时间。
我必须在自定义用户控件上工作,但Visual Studio没有将其识别为有效的项集合。
假设我们有这个userControl:
public partial class userControls_Blablabla : System.Web.UI.UserControl
{
public List<configItem> ConfigItem {get; set; }
blablabla...rest logic here...
}
public class configItem {
public string Name {get; set;}
public string Url {get; set;}
public string Color {get; set;}
blablabla...rest logic here...
}
应该怎么做,才能在Visual Studio的。aspx编辑器上做这样的事情,并被智能感知识别?
<User_Control:userControls_Blablabla ID="blablabla" ...blablabla....>
<ConfigItem Name="1" Url="...." Color="..." />
<ConfigItem Name="2" Url="...." Color="..." />
<ConfigItem Name="3" Url="...." Color="..." />
</User_Control:userControls_Blablabla>
对不起,我的英语不是很好。
提前感谢!
您可以在控件类中放置自己的类型列表,并使用PersistenceModeAttribute进行装饰。
[PersistenceMode(PersistenceMode.InnerProperty)]
public List<configItem> ConfigItem { get; set; }
一个更好的例子:
http://am-blog.no-ip.org/BlogEngine/post/2010/04/13/ASP-NET-Custom-Control-with-PersistenceModeInnerProperty-using-Server-Controls.aspx您需要用足够的信息装饰控件及其属性,以便设计人员可以在设计时挑选细节。你检查过这个链接吗?
作为一个补充-上面的链接确实有帮助。我想添加的唯一一件事是如何直接在您的网站上注册它,以便智能感知拾取它,而无需不同的组装。
按描述创建类-而不是如果渲染覆盖OnInit方法,因为它被早些时候调用,我可以玩一些其他的道具。创建2个命名空间:
namespace x.Controls.Conference - add the class that derives from UserControl
{
public partial class SlideShow : System.Web.UI.UserControl{...}
}
namespace x.Controls.Conference.SlideShowUC - add here the base class of the collection item in the UC (Collection<Slide>)
{
public class Slide{...}
public class SlideCollectionEditor : CollectionEditor{...}
}
现在你可以直接在你的aspx页面或在web配置中注册它们,这取决于你使用该控件的频率。
WEB配置<add tagPrefix="ucSlideShow" tagName="SlideShow" src="~/x/Controls/Conference/SlideShow.ascx" />
<add tagPrefix="ucSlideShow" namespace="x.Controls.Conference.SlideShowUC" assembly="WebAssembly" />
页<%@ Register TagPrefix="ucSlideShow" TagName="SlideShow" src="~/x/Controls/Conference/SlideShow.ascx" %>
<%@ Register TagPrefix="ucSlideShow" namespace="x.Controls.Conference" assembly="WebAssembly" %>