asp.net|server ASP.NET Server Control Design Time Support
做過自己的 asp.net server control 了嗎?有沒有象 ASP.NET DataGrid 控制項那樣:
1。從 Toolbox 一拽出來,自動產生一堆代碼
2。right click 看屬性時,有一大堆 custom attribute
3。還能進入 template edit 模式把 toolbox 裡的 textbox 之類的東東拽到你的控制項中
4。甚至還能彈出一個自己的對話方塊來做巨複雜的配置
我花了一天時間來看如何做這些東東,雖然最後發現目前我不需要這些 features 但是還是
願意和大家分享一下,有些東東你不去看真的不知道原來如此簡單,正如同有些東西你看完
發現居然如此複雜一樣。
主要文檔: (注意 url 換行)
msdn lib: Enhancing Design-Time Support
http://msdn.microsoft.com/library/default.asp?
url=/library/en-us/cpguide/html/cpconenhancingdesign-timesupport.asp
PDC02 session 407 名字好像是 build asp.net server control 之類的。
msdn 文檔第一段裡就開門見山說:
In the .NET Framework, the work for design-time support is not delegated to a
design environment such as Visual Studio .NET but is enabled through a rich
built-in design-time architecture.
所以你要做的東東不是什麼 vs.net add-on,而是直接擴充你的控制項。
1。從 Toolbox 一拽出來,自動產生一堆代碼
這件事情是通過在你的 server control 代碼裡加個 attribute 實現的:
(要不怎麼說 attribute programming 呢)
[ToolboxData("<{0}:myControl runat=server></{0}:myControl>")]
public class myControl : System.Web.UI.WebControls.DataGrid // 隨便舉個例子
這樣你把你的控制項拽到 webform 裡面時,它就會自動產生這些代碼樂。