0

我希望我的神秘标题不是太神秘,但我会尝试解释我真正想做的事情。

我有一个母版页“A”,它有子页“B”和“C”。这是用 ASP.NET 中的标准母版页模型实现的。

我的网站有两个主题“T1”和“T2”。他们实际上代表不同的合作伙伴,T1 是我们自己的公司,T2 是合作伙伴。

我想根据我使用的主题在“B”和“C”页上显示特定的内容。例如,我可能想在“B”页上插入额外的按钮或图形,专门用于主题“T2”的合作伙伴。根据页面本身,此内容将位于页面上的任意位置。一些合作伙伴甚至可能不会使用此功能。

问题是我想尽可能以声明方式执行此操作,并尽量减少页面对主题的了解。

这就是“反向”母版页概念的用武之地。我想在子页面上定义一个可以插入“主题”特定内容的区域。(我说的是“主题”,因为这就是 ASP.NET 使用的内容——而且很可能是我将内容绑定到的内容)。

所以你可能想知道:

  • 为什么您不能为此使用母版页并添加额外的内容部分?原因是内容可能出现在页面上特定于该页面的位置的任何位置。
  • 为什么不能使用“嵌套”母版页?本质上是一样的原因。

可能的解决方案:

我想知道创建某种用户控件,该控件将有一个文本键,表示将在那里插入什么类型的内容。用户控件必须知道要为每个“主题”显示什么——可能是通过动态创建相关的附加用户控件。

这似乎有点笨拙 - 所以我想知道其他人可能为类似情况创建了什么样的解决方案。

4

4 回答 4

1

您可以使用 CSS 将内容部分放置在页面上的任何位置。所以我不会担心页面位置等。

如果是我,我只是将 2 个不同的 css 文件动态加载到一个母版页中,并基于相同的逻辑将不同的内容呈现到占位符中。

于 2009-01-19T05:31:18.327 回答
1

我目前正在一个具有类似要求的网站上工作,这些要求对 CSS 来说太多了。在一种布局中,登录是水平朝向呈现顺序的顶部,而在另一种布局中,它位于右侧列中。

我们使用标准的 ASP.NET 主题来推出 CSS、通过 SkinID 的徽标 URL 等。

为了获得自定义布局,我创建了一个“Loader”控件,该控件通过 Loader 属性中指定的列表加载 UserControls。该属性可以直接在加载器标记中定义,也可以通过主题中的 .skin 文件定义。

列表中的每个键都只是 UserControl 的基本名称(我添加了路径和扩展名)。这些控件是通过 Page.LoadControl() 创建的。

于 2009-01-19T11:32:44.807 回答
0

你有针对不同合作伙伴的固定布局吗?还是您希望合作伙伴在运行时选择布局?

如果布局是固定的,那么一种方法是创建 zen 风格的 CSS ( http://www.csszengarden.com/ ),然后根据客户/合作伙伴动态加载它。如果您希望合作伙伴在运行时修改布局,那么您可能想要使用 Webparts。

希望这可以帮助。

于 2009-01-19T05:27:53.327 回答
0

您可以在 VS2008 中使用嵌套母版页!

看这里 -

斯科特·格思里的博客

于 2009-01-19T11:40:19.127 回答