2010-09-06 38 views
0

我有a.master和b.aspx。訪問函數在aspx頁面到master頁面

我在我的aspx頁面有一些功能。

如何在a.master頁面中訪問該功能。

謝謝

+1

我不認爲你真的可以打電話,它更好地把這個功能移動到一個類,並從女巫頁你的類呼叫。 – Aristos 2010-09-06 06:14:38

回答

1

比方說,你想從b.aspx從a.master調用foo。所以首先是你已經使方法內部(或公共),然後你可以使用代碼如下面的母版頁是調用該方法。

var page = (b)this.Page; 
page.Foo(); 

請注意,b將是b.aspx中類名後面的代碼。請注意,如果您使用另一個頁面c.aspx並使用相同的主控件a,上述代碼將失敗。一般來說,我會說,從主站調用頁面特定的函數是沒有意義的,除非函數存在於某些基本頁面類中,並且在這種情況下,您應該轉換爲該基本頁面類。

編輯:由阿西要求更復雜的例子:

考慮您的內容頁面b.aspx如

<%@ Page Language="C#" MasterPageFile="a.Master" Title="Page B" AutoEventWireup="true" 
    CodeBehind="b.aspx.cs" Inherits="YourProject.b" %> 

而在隱藏文件的代碼(b.aspx.cs),你有a.master頁的一個方法foo如

namespace YourProject 
{ 
    public partial class b : System.Web.UI.Page 
    { 
      void Foo(string someParameter) 
      { 
       Label1.Text = someParameter 
      } 
     ... 
    } 
} 

現在,在後面的代碼(a.master.cs)

namespace YourProject 
{ 
    public partial class a : System.Web.UI.MasterPage 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      b contentPage = (b)this.Page; 
      contentPage.Foo("Hello"); 
     } 

     .... 
    } 
} 
+0

這是一般的想法,但(b)無法從母版頁找到...你做了測試看看? – Aristos 2010-09-06 06:15:12

+0

如果b.aspx使用母版頁,則母版的Page屬性將給出b頁面對象的引用。這很簡單,因爲母版頁只不過是實際頁面上的控件。 – VinayC 2010-09-06 06:29:43

+0

這不起作用,你理論上講,但你沒有嘗試。 – Aristos 2010-09-06 06:56:14

1

當然你可以在b.aspx方法是公共的調用它在a.master。不過,我建議你仔細考慮你的設計。因爲它真的很奇怪,就像你從它的父類中調用一個子類的方法(儘管它在理論上是可能的)。您在修改之前,問自己:

Is it necessary to call this method in the master page? If yes, do I have a better place to put the method?

1

正如其他人所說,可以這樣做。然而,這是一種奇怪的做事方式。你可能會做得更好,以不同的方式做你想做的事情。母版頁面的整個構思是「包裝」多種內容頁面。如果你的內容頁面沒有你想要調用的功能呢?

你可以確保你的所有內容頁面都有這個功能,但爲什麼不把它放在主頁面呢?

也許如果你對你想要做的更好一點表示贊同,我們可以建議你以更好的方式處理事情。

0

要訪問,或者:

  1. 作出這樣的方法static方法。
  2. 將您的代碼移動到App_Code文件夾中。
  3. 將您的代碼移出您的Web項目,移入某個通用程序集並將其用作參考。