繁体   English   中英

我应该如何创建具有可变布局的用户控件?

[英]How should I go about creating a user control with variable layout?

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

举一个人为的例子,说我有一个标签和一个文本框。 在一种布局中,我希望div包含标签和文本框,并使其相互重叠。 在另一个布局中,我希望它们并排包含在表中。

我是否应该继续并在每个视图之间复制控件? 似乎违反了DRY原则,但是我不确定是否有很多选择。 一种局部解决方案是将多视图的视图放入命名容器中,这样我至少可以节省自己必须为重复的控件ID加上前缀以使它们唯一的时间。

谢谢! 请随时询问以上内容是否没有道理。

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

听起来确实像您应该继续创建服务器控件,而不只是用户控件。 您必须在代码中创建标记,但这将为您提供最大的灵活性。

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

FileLayout1.ascx
FileLayout2.ascx

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

FileLayout1.ascs.cs

您可以加载1或2。

局限性/问题在于两个ascx必须具有完全相同的控件名称,并且您具有相同的控件2次(但是代码仅是一次)

从我的角度来看,好主意是您可以自由选择两种布局。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM