2012-05-09 17 views
4

FindControlを使用せずに、コンテンツページからマスターページにラベルを設定しようとしています。だから、マスターページに私が宣言:masterpageでコントロールを見つける

public partial class MainMasterPage : System.Web.UI.MasterPage 
{ 

    public string UserOfficeLabel 
    { 
     get { return lblUserOffice.Text; } 
     set { lblUserOffice.Text = value; } 
    } 
    public string OfficeLocationLabel 
    { 
     get { return lblOfficeLocation.Text; } 
     set { lblOfficeLocation.Text = value; } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    .... 
    } 
} 

「UserOfficeLabel」と「OfficeLocationLabel」マスターページ上のラベルです。

Master.UserOfficeLabel = ... 
:私はラベルを設定/アクセスしよう背後conentページのコード(.csファイルのファイル)で

<%@ MasterType VirtualPath="~/Main/MainMasterPage.master" %> 

:そして、コンテンツページ(.aspxの)中で、私は「ページ」ディレクティブの下に次のディレクティブを追加しました

UserOfficeLabelはMasterのオプションではありません(VS Intellisenseはオプションとしてリストしません)。とにかくそれを追加すると、「MainMasterPage.UserOfficeLabelは保護レベルにアクセスできない」と表示されます

+1

なぜFindControlを使用したくないのですか? –

+1

"私はネジを持っていますが、何かにネジを差し込みたいのですが、ドライバーを使用したくないのですが、助けてください。 – asawyer

+0

FindControlの使用はOO /カプセル化の観点から悪いので、可能であれば避けてください。これは、C++でのポインタによるプライベート変数の公開に似ています。これがあなたの質問に答えることを願っています – NoBullMan

答えて

0

ここで探しているものが見つかりました: http://odetocode.com/blogs/scott/archive/2005/07/16/mastertype-in-asp-net-2-0.aspx理論的には はあなたが私はあなたが

Dim LocalMasterPageRef As MyMasterPageName 
LocalMasterPageRef = CType(Me.Master, MyMasterPageName) 
... 
LocalMasterPageRef.xxxx 

変数

はそれが役に立てば幸い宣言することでしようとしているもののようなものをやった部分クラス

Public Shadows ReadOnly Property Master() As otc 
    Get 
     Return CType(MyBase.Master,otcMaster) 
    End Get 
End Property 

内の以下のコードが表示されるはずコンパイルするとき。

+0

ありがとうJuan。コードをトレースすると、マスターページで正しいラベルが取得され、テキストが正しく設定されているように見えますが、ページを更新するまでページのラベルは変わりません。 – NoBullMan

+0

マスタページラベルの変更は、コンテンツページのドロップダウンリストのSelectedIndexChangedイベントハンドラで行われ、このドロップダウンリスト(ほかのコントロール群とともに)はAjaxアップデートパネル内にあります。これが違いを生むかどうかはわかりません。 – NoBullMan

+0

わかりません... 1)マスタページのハンドライベントと子ウィンドウからラベルを変更する必要性との関係は何ですか?2)Ajaxの更新パネルを見ると、私は私はそのコンポーネントに関連した2,3の問題を読んだと思う。幸運 –

関連する問題