2011-08-05 12 views
3

異なるコンテンツページで使用される2つのマスターページがあります。 コンテンツページからマスタページプロパティを設定して、マスタページにこれらの値に基づいていくつかの変更を表示できるようにしたいとします。また、マスターページに追加されたユーザーコントロールのマスターページプロパティにアクセスして、変更内容を反映させる必要があります。それを達成する方法?ASP.Net Webフォーム - ページとユーザーコントロールからMasterPageのプロパティを設定する方法

<%@ MasterType VirtualPath="/Site.master" %>を追加してから**Master.property=value**を追加することで、コンテンツページからマスターページのプロパティを設定する方法を見つけましたが、ユーザーコントロールにアクセスする方法についてはわかりません。何か案は?次のようにあなたがプロパティにアクセスすることができ、あなたのUserControlから

abstract public class MasterPageBase : System.Web.UI.MasterPage 
{ 
    public string Prop1 
    { 
     get { return "Some Value"; } 
    } 
} 

あなたのマスターページは、その継承ベースクラスのフォームを作成することができます

答えて

2

は、あなたが保存するために探しているプロパティが含まれ

haのこのあなたを使用するためには、FindControlメソッドを使用することにより

MasterPageBase masterPage = (MasterPageBase)this.Page.Master; 
string strTest = masterPage.Prop1; // "Some Value" 
0

私はあなたの2つの方法であなたのマスターページで定義されたユーザーコントロールにアクセスすることができますねこれを追加した.aspxページでは、あまりにもコンテンツページでユーザーコントロールのためのサーバーのタグを追加するVEの:

<%@ Register Src="~/myControl.ascx" TagName="myControl" TagPrefix"uc" %> 

その後、背後にあるコードで:

myControl = (myControl)this.Page.Master.FindControl("userControl_Id"); 

か、あなたのマスターページにパブリックプロパティを作成することができますそれはあなたのユーザーコントロールを返します。

public myControl UserControl { get; set; } 

とあなたのコンテンツページの背後にあるコードでは、単にユーザーコントロールのプロパティを通じてこのユーザーコントロールにアクセスすることができます。

myControl ctrl = (myControl)this.Page.Master.UserControl; 
0

私は私のために働いていたものですので、ここでは、上記の答えが仕事を得ることができませんでした:あなたはユーザーコントロールからマスターページのプロパティを参照したい

。その後で

<%@ Register Src="~/Source/MasterPages/Main.master" TagPrefix="MSTR" TagName="MasterPage" %> 

public string BodyClass 
{ 
    set 
    { 
     this.masterBody.Attributes.Add("class", value); 
    } 
} 

が今そうのようなユーザーコントロールASCXファイルでマスターページへの参照を追加します。

まず、あなたのマスターページには、そのようなパブリックプロパティを持っていますコードの後ろに(私の場合はC#)あなたはこのコードを持っています:

Main masterPage = (Main)this.Page.Master; 
masterPage.BodyClass = "container"; 

参照なしあなたのユーザコントロールの上のマスターページには、マスターページクラスを見つけることができません。

0

コントロールは、アクセス修飾子 "protected"を持つMaster.designer.csで定義されています。コードビハインド(Master.cs)にその定義をカットアンドペーストし、アクセス修飾子を「public」に変更します。 次に、Derek Hunzikerによって与えられた答えのようにマスターページコントロールにアクセスできます。

MasterPageBase masterPage = (MasterPageBase)this.Page.Master; 
string strTest = masterPage.Prop1; // "Some Value" 
関連する問題