2011-07-13 38 views
3

想象一下,你有两个masterpages:asp.net:主页的继承不会继承占位符吗?

母版 “A”: 占位符-A1 占位符-A2

MaterPage “B”(从A继承) 填充的 “占位符-A1”

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

我该怎么做?

我发现的唯一方法是通过占位符“PlaceHolder-B1”将“PlaceHolder-A2”翻译为MasterPage“B”,该占位符为“PlaceHolder-A2”内的空白。那么页面应该填充“PlaceHolder-B1”。

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

预先感谢您!

+0

你究竟想在这里完成什么?您先前对PlaceHolder-B1进行了单一引用,而未事先描述它。我有一种感觉,你所寻找的最终结果可以比你的方法更容易完成。 – MoarCodePlz

回答

3

因为你的问题是,是否有一个“简单”的方式做到这一点,我想说的答案是否定的。真正你需要做的就是确保内容传播者通过每个母版页向下传播。你甚至可以使用相同的名称。我使用嵌套masterpages所有的时间,例如,我总是传播占位符<head>区域页面:

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

我看不出有什么太复杂有关?出于某种原因,您无法更改其中一个主页面吗?如果是这样,那么您将被迫以编程方式访问ContentPlaceHolder,类似于Precious Roy所描绘的内容(虽然我不确定他的示例对于您描述的场景是否100%正确)。

0

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

2

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

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