【问题标题】:SOLID , MasterPages and ASCX?SOLID、MasterPages 和 ASCX?
【发布时间】:2012-12-12 19:54:27
【问题描述】:
我需要为网站创建布局。 (我目前正在处理母版页)。
但是,徽标 (ascx) 可能位于不同 位置:(位置由查询字符串值确定...)。
-
ascx 是否应该通过查询字符串知道在哪里呈现自己
或
FYI 根据 DIP(依赖倒置):
高级类不应依赖于低级类。两者都应该
依赖抽象
所以我猜想在母版页的 thc ctor 中,我应该向 ascx ctor 提供它应该呈现的位置。
like in this first sample
(p.s.我已经知道masterpage也是继承usercontrol)。
【问题讨论】:
标签:
c#
asp.net
html
master-pages
solid-principles
【解决方案1】:
母版页知道如何呈现任何周围的 div 标签和/或设置对 html 其他区域的可见性。 .ascx 知道其周围的上下文会很尴尬。
话虽如此,我会更进一步。我会让母版页获取查询字符串值。但随后我将有另一个类 (LogotypeService) 运行一个方法 (GetPosition),该方法采用该值并理解它并返回一些枚举 (LogotypePosition)。如果徽标出于某种原因必须知道它在哪里,它可以将此枚举作为由母版页设置的属性。
这样,您的主人和您的控件都不包含确定为什么应该在某个位置呈现它的逻辑。但他们有足够的信息将其放置在正确的位置,甚至在需要时进行一些自定义渲染。
【解决方案2】:
是的,母版页应该负责在页面上呈现用户控件。
所以我希望你必须将它包装在一个 div 中,类随 URL 参数而变化。