2

したがって、私の Default.aspx ページには、page_load に入力するリストボックスがいくつかあります。

ただし、ユーザーがこれらのリストボックスを変更して元の設定を復元したい場合は、Site.Master で定義されている上部のボタンで、この同じ関数ゲインを呼び出して元の値を復元する必要があります。

Site.Master ファイルから _Default オブジェクトのインスタンスへの参照を取得するにはどうすればよいですか? ページが最初に読み込まれたときに呼び出される _Default のインスタンスにグローバルにアクセスする方法はありますか? または、それを手動でどこかに保存する必要がありますか?

例えば:

Default.aspx.cs:

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            setConfigurationData();
        }

        public void setConfigurationData()
        {
            //Do stuff to elements on Default.aspx

Site.Master.cs

namespace WebApplication1
{
    public partial class SiteMaster : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void RefreshMenu1_MenuItemClick(object sender, MenuEventArgs e)
        {
            //Need to call this function from an instance of _Default, but I don't know
            //how to retrive this or save it from when it is first created

            //_Default.setConfigurationData();
4

2 に答える 2

4

このクラス スコープ変数をマスター ページに追加します。

private System.Web.UI.Page currentContentPage = new System.Web.UI.Page();

次に、このメソッドをマスター ページに追加します。

public void childIdentity(System.Web.UI.Page childPage)
{
    currentContentPage = childPage;
}

デフォルトページの Page_Load に追加します

SiteMaster masterPage = Page.Master as SiteMaster;
masterPage.childIdentity(this);

これで、マスター ページは currentContentPage 変数の参照を通じて、既定のページのオブジェクトにアクセスできるようになります。

于 2012-12-07T20:37:57.373 に答える
0

という名前の仮想メソッドを使用して、継承元のページの基本クラスを作成しますsetConfigurationData。次に、マスター ページで、Pageオブジェクトを基本クラスにキャストし、メソッドを呼び出します。

public class MyBasePage : Page
{
    public virtual void setConfigurationData()
    {
        //Default code if you want it
    }
}

あなたのページで:

public partial class MyPage : MyBasePage
{
    public override void setConfigurationData()
    {
        //You code to do whatever
    }
}

マスター ページ:

protected void RefreshMenu1_MenuItemClick(object sender, MenuEventArgs e)
{
    MyBasePage basePage = (MyBasePage)Page;
    basePage.setConfigurationData();
}
于 2012-12-07T20:30:11.147 に答える