2017-01-27 10 views
0

だから私は誰かの古い(2010年).Net 3.5 C#コードがうまく動かなくてはならない...もちろん、開発者はもうプロジェクトファイルを持っていないソース...C#.Net 3.5のアクセスマスターページクラス

ロングストーリーはマスターページクラスのプロパティにアクセスしようとしていますが、これは私が見つけることができるすべてに応じて動作するはずですが、そうではありません。背後にあるマスターページのコードの

例:ページのコードの

public partial class myMasterPage : System.Web.UI.MasterPage 
{ 
    private string pageName = ""; 
    public string PageName 
    { 
     get { return PageName; } 
     set { pageName = value; } 
    } 

    private int pageID; 
    public int PageID 
    { 
     get { return pageID; } 
     set { pageID = value; } 
    } 
} 

ワン:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" Inherits="Help" Codebehind="Help.aspx.cs" %> 
<%@ MasterType TypeName="ISLMasterPage" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 

そして最後に、そのページの背後にあるコード:

public partial class Help : BasePage 
{ 
    protected void Page_PreInit(object sender, EventArgs e) 
    { 
     base.PageID = 1; 
     Master.PageID = 1; 
    } 
} 

私はtrを持っていますMasterTypeを仮想パスに変更しています...何も...エラーが発生しています:

E'System.Web.UI.MasterPage 'には「PageID」と拡張メソッドの定義が含まれていません型「System.Web.UI.MasterPage」の最初の引数を受け入れる「PAGEID」は見つけることができる(あなたがusingディレクティブまたはアセンブリ参照が不足している?)

をだから、私にはそれが拾っていないことは明らかです私たちがコードを欲しいという事実。

私はこれが何か明白だと思っていますが、私はこのような方法で自分のコードを編成したことはありません。

+0

これを継承するページに常にmasterでアクセス不審に見える: '<%@ MasterType TypeName = "ISLMasterPage"%> 'ページには派生型がマスターページとして期待されているようだ... – user1429080

答えて

4

あなたのコードは、あなたのマスターページは、「myMasterPage」

protected void Page_PreInit(object sender, EventArgs e) 
{ 
    base.PageID = 1; 
    (Master as myMasterPage).PageID = 1; 
} 
+0

Thanks Works、私はそれが何かばかげたと思った...ちょうど私が試みなかった唯一の事について...このコードが今までに働いた方法は私を超えている... – Torvos

0

であることを知らない、通常のSystem.Web.UI.Pageをオーバーライドし、簡単にアクセスを可能にし、あなたのコードがBasePage

public partial class Help : BasePage 

を継承しているようですBasePageが使用されているすべてのページのプロパティ。このような何かがあるかもしれないBasePageクラスのクラスで

:この例では

public class BasePage : System.Web.UI.Page 
{ 
    public Site master; 

    public BasePage() 
    { 
     this.Load += new EventHandler(this.Page_Load); 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     master = ((Site)(Page.Master)); 
    } 
} 

マスターページBasePage