想象一下,你有两个主页:
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”然后。
有更简单的方法吗?
提前谢谢!
答案 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)
这听起来有点复杂..因为您可能会考虑使用“用户控件”之间的页面之间有一些共同的部分。您可以将用户控制放在页面上您想要的任何位置。