4

私は .net 3.5 サイト、標準 Web サイト プロジェクトに取り組んでいます。

サイトの App_Code フォルダー (MyPage) にカスタム ページ クラスを作成しました。

また、プロパティを持つマスター ページもあります。

public partial class MyMaster : System.Web.UI.MasterPage
{
...
    private string pageID = "";

    public string PageID
    {
        get { return pageID; }
        set { pageID = value; }
    }
}

MyPage のプロパティからこのプロパティを参照しようとしています。

public class MyPage : System.Web.UI.Page
{
...
        public string PageID
        {
            set
            {
                ((MyMaster)Master).PageID = value;
            }
            get
            {
                return ((MyMaster)Master).PageID;
            }
        }
}

「型または名前空間名 'MyMaster' が見つかりませんでした。MyMaster ページのプロパティの代わりに FindControl() を使用して動作させましたが、マスター ページの ID が変更される可能性があります。

4

3 に答える 3

6

私は、Web サイト プロジェクトで次のことを行う傾向がありました。

App_Code で、次を作成します。

BaseMaster.cs

using System.Web.UI;

public class BaseMaster : MasterPage
{
    public string MyString { get; set; }
}

BasePage.cs:

using System;
using System.Web.UI;

public class BasePage : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (null != Master && Master is BaseMaster)
        {
            ((BaseMaster)Master).MyString = "Some value";
        }
    }
}

マイ マスター ページは BaseMaster から継承します。

using System;

public partial class Masters_MyMasterPage : BaseMaster
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty(MyString))
        {
            // Do something.
        }
    }
}

そして、私のページは BasePage から継承します:

public partial class _Default : BasePage
于 2009-01-30T12:20:25.627 に答える
0

これにはすでに受け入れられている解決策があることを認識していますが、このスレッドに出くわしました。

最も簡単な解決策は、Microsoft の Web サイト ( http://msdn.microsoft.com/en-us/library/c8y19k6h.ASPX )に記載されているものです。

基本的に、子ページ aspx に追加のディレクティブを含めると、コードはそのまま機能します。

<%@ MasterType VirtualPath="~/MyMaster.Master" %>

次に、次の方法でベース MyPage のプロパティを直接参照できます。

  public string PageID
  {
        set
        {
            Master.PageID = value;
        }
        get
        {
            return Master.PageID;
        }
    }
于 2013-11-13T01:17:46.043 に答える