3

2つのマスターページがあると想像してください。

MasterPage "A":PlaceHolder-A1 PlaceHolder-A2

MaterPage "B" :( Aから継承)"PlaceHolder-A1"を入力します

「B」を継承し、「PlaceHolder-A2」(MasterPage「A」から)を取り込む通常のaspx HTMLページを作成する必要がありますか?

どうやってやるの?

私が見つけた唯一の方法は、空で「PlaceHolder-A2」内にあるプレースホルダー「PlaceHolder-B1」によって「PlaceHolder-A2」をMasterPage「B」に変換することです。次に、ページに「PlaceHolder-B1」を入力する必要があります。

それを行うためのより簡単な方法はありますか?

前もって感謝します!

4

3 に答える 3

3

あなたの質問は、これを行うための「より簡単な」方法はありますか、ということなので、答えはノーだと思います。本当にあなたがする必要があるのは、contentplaceholdersが各マスターページを通して伝播することを確認することです。同じ名前を使用することもできます。私は常にネストされたマスターページを使用しており、たとえば、<head>ページの領域のプレースホルダーを常に伝播しています。

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

何がそんなに複雑なのかわかりませんか?何らかの理由でマスターページの1つを変更するためのアクセス権がありませんか?もしそうなら、あなたはプレシャスロイが描いているものとプログラム的に類似した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 に答える