在. 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>

对不起,我的英语不是很好。

提前感谢!

在. aspx上自定义用户控件和友好属性项集合(类似于ListBox和listtitems,但带有List<Class>

您可以在控件类中放置自己的类型列表,并使用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"  %>