3

假设您有两个母版页:

母版页“A”:PlaceHolder-A1 PlaceHolder-A2

MaterPage“B”:(从 A 继承)填充“PlaceHolder-A1”

我必须创建从“B”继承并填充“PlaceHolder-A2”(来自 MasterPage“A”)的普通 aspx HTML 页面?

我怎样才能做到这一点?

我发现的唯一方法是通过占位符“PlaceHolder-B1”将“PlaceHolder-A2”转换为 MasterPage“B”,占位符“PlaceHolder-B1”为空且位于“PlaceHolder-A2”内。然后页面应该填充“PlaceHolder-B1”。

有没有更简单的方法来做到这一点?

先感谢您!

4

3 回答 3

3

既然你的问题是,有没有一种“更简单”的方法来做到这一点,我会说答案是否定的。实际上,您需要做的就是确保内容占位符通过每个母版页向下传播。您甚至可以使用相同的名称。我一直使用嵌套母版页,例如,我总是为<head>页面区域传播一个占位符:

<asp:Content ID="Content1" ContentPlaceHolderID="Head" runat="Server">
    <asp:ContentPlaceHolder ID="Head" runat="server">
    </asp:ContentPlaceHolder>
</asp:Content>

我不明白这有什么复杂的?由于某种原因,您无权更改其中一个母版页吗?如果是这样,那么您将被迫以类似于 Precious Roy 所描绘的方式以编程方式访问 ContentPlaceHolder(尽管我不确定他的示例是否 100% 适合您所描述的场景)。

于 2011-07-13T14:21:28.690 回答
2

更容易在这里是一个相对术语。在关联母版页及其占位符方面没有更简单的方法来处理它,但可以从后面的代码中设置它。请参阅问题以供参考。Roadie57 比我能解释得更好。不确定您是否使用 VB,但如果不是,您可以这样做:

ContentPlaceHolder mpContentPlaceHolder = new ContentPlaceHolder();
TextBox mpTextBox = new TextBox();
mpContentPlaceHolder = (ContentPlaceHolder)Master.FindControl("PlaceHolderA2");
if (mpContentPlaceHolder != null)
{
    ...place content in mpContentPlaceHolder
}
于 2011-07-13T13:43:24.127 回答
0

这听起来有点复杂......因为您在页面之间有一些共同的部分,您可能会考虑为此使用“用户控件”。您可以将用户控件放置在您想要的页面上的任何位置。

于 2011-07-13T13:13:49.300 回答