代码之家  ›  专栏  ›  技术社区  ›  Faisal

如何创建一个具有可变布局的用户控件?

  •  0
  • Faisal  · 技术社区  · 15 年前

    我有一个包含许多子控件的用户控件。我希望能够通过用户控件的属性更改控件的布局(即更改子控件周围的标记),但我不希望复制子控件本身。这就排除了在每个视图中使用具有不同布局版本的多视图,因为在这种情况下,我必须复制控件。我还希望使用标记,而不是直接发出控件的代码(就像您在服务器控件中所做的那样)。

    举一个人为的例子,假设我有一个标签和一个文本框。在一个布局中,我希望标签和文本框由div包含,并在彼此之上进行布局。在另一种布局中,我希望它们并排包含在表中。

    我应该在每个视图之间复制控件吗?这似乎违反了干法原则,但我不确定我是否有很多选择。一个部分的解决方案是将多视图的视图放入命名容器中,这样我至少可以省去在重复的控件id前面加上使其唯一的前缀的时间。

    谢谢!请随意询问以上是否有道理。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Nathan Taylor    15 年前

    你可以用一个 templated user control 为用户控件的每个部分定义页眉和页脚模板。在那里,您可以在用户控件上使用CSS和/或公共属性来设置控件的预定义(非模板化)组件的样式。

        2
  •  1
  •   ChrisLively    15 年前

    听起来你应该创建一个服务器控件,而不仅仅是一个用户控件。您必须在代码中创建标记,但这将允许您获得最佳的灵活性。

        3
  •  1
  •   Aristos    15 年前

    一个想法是创建第二个用户控件,即在设计文件上克隆第一个用户控件,但具有相同的代码文件。

    FileLayout1.ascx
    FileLayout2.ascx
    
    both of this have
    CodeFile="FileLayout1.ascs.cs" Inherits="FileLayout1"
    
    FileLayout1.ascs.cs
    

    您可以加载1或2。

    限制/问题是两个ascx必须具有完全相同的控件名,并且您拥有相同的控件2次(但代码只有一次)

    推荐文章