当前位置:  开发笔记 > 后端 > 正文

有没有办法将内部控件放在ASP.NET自定义控件中?

如何解决《有没有办法将内部控件放在ASP.NET自定义控件中?》经验,为你挑选了1个好方法。

我想做类似的事情(更新示例):


  
    
    
        
  
    
    
    
  

可能?任何教程或操作方法?我不确定甚至要搜索什么,或者这是什么,所以到目前为止还没有找到任何东西.内部控制?内心收藏的东西......?



1> Rex M..:

使用ParseChildrenAttribute和PersistChildrenAttribute属性:

[ParseChildren(false)]
[PersistChildren(true)]
public class MyControl : UserControl { }

这将导致您放入引用内的任何控件:


  

要附加到UserControl内容的Controls集合的末尾.

但是,如果您想拥有一组控件,则应该使用服务器控件而不是用户控件.对于像这样工作的控件:


    
        
    

您需要一个具有Tabs属性的Control类; Tabs属性应该是Collection; 它应该包含Tab类型的对象.我在这里创建了三个类:

[ParseChildren(true, "Tabs")]
public class TabControl: WebControl, INamingContainer
{
    private TabCollection _tabs;

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    [PersistenceMode(PersistenceMode.InnerDefaultProperty)]
    public TabCollection Tabs
    {
        get
        {
            if (_tabs == null)
            {
                _tabs = new TabCollection();
            }
            return _tabs;
        }
    }

    protected override void Render(HtmlTextWriter writer)
    {
        foreach (Tab tab in Tabs)
        {
            writer.WriteBeginTag("div");
            writer.WriteAttribute("class", tab.CssClass);
            writer.Write(HtmlTextWriter.TagRightChar);
            writer.Write("this is a tab called " + tab.Title);
            writer.WriteEndTag("div");
        }
    }
}

选项卡类:

public class Tab
{
    public string CssClass { get; set; }
    public string Title { get; set; }
}

标签集:

public class TabCollection : Collection { }

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有