7

コンテンツ ページからマスター ページの要素にアクセスできますか?

MasterPage1 から継承する MasterPage1 と ContentPage1 があり、MasterPage1 にはボタン Button1 があるとします。

そのボタンのプロパティをコンテンツ ページから変更することはできますか? どうすればこれを達成できますか?

私は.net2.0を使用しています

4

5 に答える 5

12

はい...MasterPageを使用してaspxページからこれを行う必要がある場合は、次のようになります。

Button myButton = (Button)Master.FindControl("myButton");
myButton.Visible = false;
于 2009-01-20T16:07:04.847 に答える
9

ページ/ユーザー コントロール マークアップに MasterPage への参照を配置する必要があります。

<%@ Reference VirtualPath="..." %>

コード ビハインドでは、Page.MasterPage を MasterPage にキャストし、そのプロパティにアクセスするだけです。

MyMasterPage myMasterPage = (MyMasterPage)Page.Master;
于 2009-01-20T16:06:59.777 に答える
4

Master.FindControl("myButton").Visible = False

上記のコマンドを実行するために使用するコントロールは、更新パネル内に配置しないように注意してください。

于 2009-07-28T11:01:26.677 に答える
3

はい、できます。これにはいくつかのアプローチがあります。

私が使用するアプローチは、マスター ページ内のデータの変更/アクセスを行うパブリック メソッドをマスター ページ内に作成することです。たとえば、私は通常、現在表示しているページ/カテゴリのリンク スタイルを変更したいので、マスター ページに次のようなメソッドを用意しています。

   Public Sub SetNavigationPage(ByVal MenuName As String)

      DirectCast(Me.FindControl(MenuName), HyperLink).CssClass = "MenuCurrent"

   End Sub

次に、コンテンツ ページで、このメソッドにそのままアクセスします。

Dim myMaster As EAF = DirectCast(Me.Master, EAF)
myMaster.SetNavigationPage("hypViewEmployee")

...ここで、EAF はマスター ページのクラスの名前です。

私が見つけた興味深い問題の 1 つは、.NET コントロールをこの方法で表示/非表示しようとするときに、.NET コントロールの Visibility プロパティを使用すると複雑になることです。これは、マスター ページとコンテンツ ページのレンダリングが原因です。これを解決するために、表示と非表示の両方に基本的な CSS スタイルを設定し、それに応じて CssClass プロパティを設定しました。

于 2009-01-20T16:07:36.887 に答える