4

FindControl を使用せずに、コンテンツ ページからマスター ページにラベルを設定しようとしています。したがって、マスターページで次のように宣言しました。

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" はマスター ページのラベルです。次に、コンテンツ ページ (.aspx) で、「Page」ディレクティブの下に次のディレクティブを追加しました。

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

コンテンツ ページのコード ビハインド (.cs ファイル) で、ラベルにアクセス/設定しようとしています。

Master.UserOfficeLabel = ...

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

4

1 に答える 1

0

ここで探しているものが見つかると思います: http://odetocode.com/blogs/scott/archive/2005/07/16/mastertype-in​​-asp-net-2-0.aspx。理論的には、コンパイルすると、部分クラス内に以下のコードが表示されるはずです

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

変数を宣言することで、あなたがしようとしているようなことをしました

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

それが役に立てば幸い。

于 2012-05-10T06:30:50.190 に答える