asp.net:主页继承不继承占位符吗?

时间:2011-07-13 13:01:05

标签: asp.net master-pages contentplaceholder

想象一下,你有两个主页:

MasterPage“A”: 占位符-A1 PlaceHolder-A2

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

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

我该怎么做?

我找到的唯一方法是将“PlaceHolder-A2”翻译为MasterPage“B”,占位符“PlaceHolder-B1”为空,位于“PlaceHolder-A2”内。页面应填充“PlaceHolder-B1”然后。

有更简单的方法吗?

提前谢谢!

3 个答案:

答案 0 :(得分:3)

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

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

我没有看到那么复杂的事情?由于某种原因,您无权更改其中一个母版页吗?如果是这样,那么你将被迫以编程方式访问ContentPlaceHolder,类似于Precious Roy所描绘的内容(虽然我不确定他的例子是否100%适合你描述的场景)。

答案 1 :(得分:2)

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

ContentPlaceHolder mpContentPlaceHolder = new ContentPlaceHolder();
TextBox mpTextBox = new TextBox();
mpContentPlaceHolder = (ContentPlaceHolder)Master.FindControl("PlaceHolderA2");
if (mpContentPlaceHolder != null)
{
    ...place content in mpContentPlaceHolder
}

答案 2 :(得分:0)

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