使用繼承擴充功能
更新:2007 年 11 月
除了建立使用者控制項,您還可使用繼承 (Inheritance) 擴充 ASP.NET Mobile Web 網頁的功能。如果您建立繼承自現有 ASP.NET Mobile 控制項類別 (Class) 的類別,您就可以針對該類別進行覆寫現有成員或建立新屬性、方法和事件,來加入功能。
使用繼承建立類別
下列程式碼範例示範名為 CarList 的新類別,此類別繼承自 List 行動控制項,且已針對呈現汽車資訊完成特製化。CarList 類別封裝繫結至 Car 物件清單所需的資訊。
using System.Web.UI.MobileControls;
namespace myCompany.MobileControls
{
class CarList : List
{
// Override OnInit, and set the DataValueField property
// to the correct property of a Car object to use as the
// value of each list item.
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.DataValueField = "id";
}
// Override OnItemDataBind, and set the list item display
// text to a rich expression, containing the year, make,
// and model of the car.
protected override void OnItemDataBind(ListDataBindEventArgs e)
{
base.OnItemDataBind(e);
CarInfo car = (Car)e.DataItem;
e.ListItem.Text =
String.Format("{0}{1}{2}", car.Year, car.Make, car.Model);
}
}
}
如需有關透過繼承來擴充控制項功能的詳細範例,請參閱「ASP.NET Mobile 快速入門教學課」。
部署新類別
若要使用此範例類別,請將類別編譯成組件 (Assembly),並將它放入應用程式的 Bin 資料夾。下列範例會示範如何註冊名為 MyCompany.CarList.dll 的組件,您可以使用自訂標記 (Tag) 中指定的 @ Register 指示詞在網頁上註冊組件。
<%-- Register the myCompany.MobileControls namespace. --%>
<%@ Register TagPrefix="car" Namespace="myCompany.MobileControls"
Assembly="myCompany.CarList" %>
// More code.
<%-- Control declaration --%>
<car:CarList id="myCarList" />
如果您的繼承控制項未修改父類别的呈現功能,您就不需要撰寫該類別的配接器。在上一個範例中,由於每一個 CarList 控制項也是 List 物件,所以這時會自動使用目前瀏覽器之 List 控制項所指派到的配接器,例如 HtmlListAdapter。然而,如果您想要針對特定裝置提供 CarList 控制項的特製化呈現,您可以撰寫配接器,並在 Web.config 檔中註冊這項對應。