C# 实体、母版页和ASCX?

C# 实体、母版页和ASCX?,c#,asp.net,html,master-pages,solid-principles,C#,Asp.net,Html,Master Pages,Solid Principles,我需要创建一个网站布局。(我目前正在制作母版页) 但是,徽标(ascx)可能位于不同的位置:(位置由查询字符串值确定…) ascx是否应该知道在何处通过查询字符串呈现自身 或 母版页应该在何处呈现 根据DIP的FYI(相关性反演): 高级课程不应该依赖于低级课程。两者都应该 依赖抽象 所以我想在母版页的thc ctor中,我应该向ascx ctor提供它应该呈现的位置 我说得对吗?或者,有更好的方法吗 (另外,我已经知道母版页也继承了用户控件。是的母版页应该负责在页面上呈现用户控

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

但是,徽标(ascx)可能位于不同的位置:(位置由查询字符串值确定…)

  • ascx
    是否应该知道在何处通过查询字符串呈现自身

  • 母版页
    应该在何处呈现
根据DIP的FYI(相关性反演):

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

所以我想在母版页的thc ctor中,我应该向ascx ctor提供它应该呈现的位置

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

(另外,我已经知道母版页也继承了用户控件。

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


因此,我希望您必须将其包装在一个div中,并使用URL参数更改类。

母版页将知道如何呈现任何周围的div标记和/或设置html其他区域的可见性。对于.ascx来说,了解其周围的上下文是非常尴尬的

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

这样,无论是您的主控还是控件都不包含用于确定为什么应该在某个位置渲染的逻辑。但他们有足够的信息将其放置在正确的位置,甚至在需要时进行一些自定义渲染