Re: [問題] ASP.NET的使用者控制項呼叫aspx下的func
如果有一些Method想要讓ASP.NET Pages直接共用,那麼我會建議建立自己的Base Page Class。
並讓需要使用共用的Method的ASP.NET Pages繼承它。
當然,如果該Page上的Web User Control想要調用那些共用的Method也是有辦法的。
請參考以下程式碼大概的說明:
1.
// 建立一個Base Page Class並且繼承 System.Web.UI.Page
public class MyBasePage1 : System.Web.UI.Page
{
// 這是要共用的Method
public void DoSomething()
{
}
}
2. 修改ASP.NET Page使其改繼承自訂的Base Page Class,
由於自訂的類別又繼承自System.Web.UI.Page,所以對ASP.NET來說沒影響。
// 這是第一個ASP.NET Page,改繼承 MyBasePage1
public partial class _Default : MyBasePage1
{
protected void Page_Load( object sender, EventArgs e )
{
// 呼叫共用的Method
DoSomething();
}
}
// 這是第二個ASP.NET Page,同樣改繼承 MyBasePage1
public partial class Default2 : MyBasePage1
{
protected void Page_Load( object sender, EventArgs e )
{
// 呼叫共用的Method
DoSomething();
}
}
因此,以上兩個ASP.NET Pages都能夠呼叫在MyBasePage1類別內的Method,達到共用目的。
3. Web User Control要調用MyBasePage1的Method
// 這是一個 WebUserControl...
public partial class WebUserControl1 : System.Web.UI.UserControl
{
protected void Page_Load( object sender, EventArgs e )
{
// 取得所屬頁面的參照
MyBasePage1 parentPage = this.Page as MyBasePage1;
// 呼叫該頁面上共用的Method
parentPage.DoSomething();
}
}
以上,希望不難理解。
其實Page與User Control在執行時期都只是一些類別物件而已,要讓它們能夠
達到相互認識,互通有無,還有不少方式,甚至有些是更有彈性的做法。
更彈性的做法,有一些是Design Pattern所提到的方式,就自己思考看看嚕。
另外提醒,上述做法,你可以不只擁有一個自訂的Base Page Class。
可依實務需求去切割成不同目的的Class。譬如說,管理者頁面專屬的Base Page Class。
又採上述做法的專案較大時,只有一層的Base Page Class,可能會稍嫌不足,那就可以再
拉出一層。
因為你原文提到要讓User Control去調用Page的Method,所以我提出上述方法。
以我的經驗而言,User Control不知道Page的細節是比較好的^^"
上述方式的原理同樣可以施於Web User Control,讓Page去設定Web User Control的自訂屬
性,或是調用Web User Control的Method。
※ 引述《grassboy2 (活力花俏草兒仔政﹞O花俏)》之銘言:
: ※ [本文轉錄自 Web_Design 看板]
: 作者: grassboy2 (活力花俏草兒仔政﹞O花俏) 看板: Web_Design
: 標題: [問題] ASP.NET的使用者控制項呼叫aspx下的function?
: 時間: Wed Apr 15 05:19:58 2009
: 嗯嗯…
: 最近開始接觸ascx這個玩意…
: 話說我是用C#寫的…
: 然後我在index.aspx.cs下,針對index.aspx的某個PlaceHolder
: 讓他載入userControl.ascx這個使用者控制項…
: 那…如果我在index.aspx.cs有一支function f()
: 那…我有辦法在userControl.ascx.cs檔下面呼叫f()嗎?
: 還是要把f()也copy到userControl.ascx.cs下@@a
: (感覺這樣寫有點難維護的說>"<)
--
對於已經無法擁有的
唯一能做的是
不要忘記
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.224.212.65
※ 編輯: petrushka 來自: 125.224.212.65 (04/15 19:55)
→
04/15 21:28, , 1F
04/15 21:28, 1F
推
04/17 23:25, , 2F
04/17 23:25, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):