2011年11月15日 星期二

ASP.NET+C# 如何在自建的Class引用頁面的方法

首先在app_code裡面新增一個BasePage.cs
/// <summary>
/// BasePage 的摘要描述
/// </summary>
public class BasePage:System.Web.UI.Page
{
public BasePage()
{
//
// TODO: 在此加入建構函式的程式碼
//
}
    public void doingSomething()
    {
        Response.Write("I am 91");
    }
}
接著在新增一個beNewClass.cs
/// <summary>
/// beNewClass 的摘要描述
/// </summary>
public class beNewClass
{
public beNewClass()
{
//
// TODO: 在此加入建構函式的程式碼
//
}
    public string abc()
    { return "beNew"; }
}
接著來測試這兩個class,把你的aspx上加一個button
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>未命名頁面</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
    </div>
    </form>
</body>
</html>
在.aspx.cs裡,繼承BasePage
public partial class _Default : BasePage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        doingSomething();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        beNewClass a = new beNewClass();
        this.Button1.Text = a.abc();
    }
}

你會發現,Page_load的時候,會跑doingSomething(),這個method是BasePage裡的,
因為是繼承所以不用宣告,
每一頁都可能會用到的方法,可以通通歸納到BasePage裡,(或是拆的更細,高內聚低耦合)

具有特別意義的class,則透過new來初始化使用,new裡面其實也可以使用參數,
來達到多載的初始化目的。
所以按下button後,可以使用beNewClass a的abc()。

沒有留言:

張貼留言