我有一个包含许多子控件的用户控件。我希望能够通过用户控件的属性更改控件的布局(即更改子控件周围的标记),但我不想自己复制子控件。这排除了在每个视图中使用具有不同版本布局的MultiView,因为在这种情况下我必须复制控件。我还宁愿使用标记而不是直接发出控件的代码(就像你在服务器控件中那样)。
举一个人为的例子,说我有一个标签和一个文本框。在一个布局中,我希望标签和文本框由div包含并相互叠加。在另一种布局中,我希望它们并排放在表格中。
我应该继续并在每个视图之间复制控件吗?这似乎违反了DRY原则,但我不确定我是否有很多选择。部分解决方案是将多视图的视图用于命名容器,这样我至少可以节省自己为重复控件ID添加前缀以使其独特的时间。
谢谢!如果上述内容没有意义,请随时询问。
答案 0 :(得分:1)
您可以使用templated user control为用户控件的每个部分定义页眉和页脚模板。从那里,您可以在用户控件上使用CSS和/或公共属性来设置控件的预定义(非模板化)组件的样式。
答案 1 :(得分:1)
听起来好像你应该继续创建服务器控件而不仅仅是用户控件。您必须在代码中创建标记,但它会为您提供最大的灵活性。
答案 2 :(得分:1)
一个想法是创建第二个用户控件,即使用设计文件中的第一个克隆,但具有相同的代码文件。
FileLayout1.ascx
FileLayout2.ascx
both of this have
CodeFile="FileLayout1.ascs.cs" Inherits="FileLayout1"
FileLayout1.ascs.cs
您可以加载1或2。
限制/问题是ascx必须具有完全相同的控件名称,并且您具有相同的控件2次(但代码只有一次)
从我的观点来看,好的想法是你可以随意设计你想要的布局。