SOLID,MasterPages和ASCX?

时间:2012-12-27 12:07:05

标签: c# asp.net html master-pages solid-principles

我需要为网站创建一个布局。 (我目前正在处理母版页。)

然而,徽标(ascx)位于不同的位置:( 位置由查询字符串值确定... )。

enter image description here

  • ascx是否应该知道通过查询字符串呈现自己的位置

  • master page是否应该在哪里提供?

FYI根据DIP(依赖性倒置):

  

高级课程不应该依赖于低级课程。两者都应该   取决于抽象

所以我想在主页面的代码中,我应该向ascx ctor提供它应该呈现的位置。

like in this first sample

  • 我是对的吗?或者,有更好的方法吗?

(p.s。我已经知道母版页也继承了usercontrol)。

2 个答案:

答案 0 :(得分:0)

是的母版页应该负责在页面上呈现用户控件。

所以我希望你必须将它包装在div中,并使用URL参数更改类。

答案 1 :(得分:0)

母版页将知道如何渲染任何周围的div标签和/或设置对html的其他区域的可见性。 .ascx了解周围环境会非常尴尬。

话虽如此,我会更进一步。我会让主页面获取查询字符串值。但后来我会让另一个类(LogotypeService)运用一个方法(GetPosition)来获取该值并理解它并返回一些枚举(LogotypePosition)。如果徽标由于某种原因必须知道它在哪里,它可以将此枚举作为由母版页设置的属性。

这样,你的主人和你的控制都不包含弄清楚为什么要在某个位置呈现它的逻辑。但是他们有足够的信息将它放在正确的位置,甚至可以根据需要进行一些自定义渲染。