0

再設計するように言われていMasterPageます。私の会社はAbleCommerceシステムを使用していますが、非常にトリッキーです。AbleCommerece がずっと前に HTML で作成した別のレイアウト テンプレートがあり、マスターページを再設計する必要があります。

元:

OneColumn.html

<div id="wrapper">
      [[layout:header]] 
      <div id="Content">
            <div id="MainContent">
                  [[layout:content]]
            </div>
      </div>
[[layout:footer]]
</div>

RightSidebar.html

[[layout:header]]
<div id="outerContentWrapper">
    <div id="innerContentWrapper">
        [[layout:content]]
        [[layout:rightsidebar]]
    </div>
</div>
<div id="footerbar">[[layout:footer]]</div>

マスターページ:

only one ContentPlaceHolder in MasterPage

  <asp:ContentPlaceHolder ID="PageContent" runat="server">
    </asp:ContentPlaceHolder>

コンテンツページ

<cb:ScriptletPart ID="ShowProduct" runat="server" Layout="One Column" Header="Standard Header" Content="Show Product Page" Footer="Standard Footer" Title="Show Product" AllowClose="False" AllowMinimize="false" />

ここで、コンテンツ ページがOne Coulmn.htmlhtml を探してロードし、次に 1 つの列Standered Header.htmlがヘッダーを参照するページをロードしwebuser control、レイアウトがロードProduct Page.htmlされ、別のセットを参照するページを表示webuser controlsします。

問題:この設計に従うことで、Asp.Net UserControls. したがって、Web サイトに新しいページを作成するときはいつでも、.aspx を作成してから をインクルード**<cb:ScriptletPart>**し、新しい HTML ファイルのセットを作成してからUSerControls.

このシステムを取り除き、userControls を .aspx ページ内に直接ロードしたいのですが、それは簡単ですが、マスターページに 1 列レイアウトまたはその他のレイアウトを使用するように通知する方法がわかりません。

コンテンツ ページのパブリック プロパティによって指定されたレイアウトを使用するようにコンテンツ ページからマスターページに指示する方法はありますか。または、この種の状況に対処するためのその他の提案。

4

1 に答える 1

1

マスター ページ内のコントロールにアクセスするには、次の 2 つの方法があります。

パブリック プロパティとメソッドを使用する

ご覧のとおり、コンテンツ ページにはヘッダー タグとタイトル タグがありません。

したがって、コンテンツ ページのタイトルを変更したい場合 (これは必須です)、title タグにアクセスする必要があります。

まず、コード ページからアクセスできるようにタイトル タグを変更する必要があります。

簡単です。次のように id 属性と runat 属性を追加する必要があります。

<title id="sometitle" runat="server"></title>

次に、マスター ページで、次のプロパティを追加します。

public string SomeTitle
{
  set
  {
    sometitle.Text = value;
  }
}

最後に、コンテンツ ページ内で、このスニペットを Load イベントに追加します。

MasterPage masterPage = MasterPage)this.Master;

masterPage.mainTitle = "Hello World";

ご注意ください:

Master プロパティは MasterPage 型の参照を返すため、MasterPage 型にキャストする必要があります。次のように、コンテンツ ページに @MasterType ディレクティブを追加することで、これを回避できます。

<%@ MasterType TypeName=" MasterPage " %>

MasterPage myMaster =this.Master;

それが役立つことを願っています。

于 2013-12-06T14:16:59.253 に答える