ASP.NET Server Control Design Time Support

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 里面时,它就会自动生成这些代码乐。

2。right click 看属性时,有一大堆 custom attribute
   比如说你的控件里面有个属性是指定 xsl file 的 url,你可以这样:
    [
    Browsable(true),
    Category("Data"),
    DefaultValue("http://myserver/myApp/myXSL.xsl"),
    Description("specify your XSL file URL"),
    Editor(typeof(System.Web.UI.Design.XslUrlEditor),
    typeof(System.Drawing.Design.UITypeEditor))
    ]
    public string MyXSLTSrc {...}
   如此这般,你就可以在属性对话框的 data 组中看到你的 MyXSLTSrc 乐,
   而且你可以通过一个专门的选 xsl url 的对话框来指定这个值乐。

3。还能进入 template edit 模式把 toolbox 里的 textbox 之类的东东拽到你的控件中
   免费午餐结束了。剩下东东真的要写代码了。
   首先得告诉控件你为它老人家专门作了个 designer:
   [ Designer("YourNameSpace.Design.MyControlDesigner, YourNameSpace") ]
    public class myControl : System.Web.UI.WebControls.DataGrid // 随便举个例子

   然后真的给它老人家做个 Designer:
   namespace YourNameSpace.Design
   {
      public class MyControlDesigner : System.Web.UI.Design.WebControls.DataGridDesigner    
      { // 由于 control 是从 DataGrid 继承的,control designer 也就从 DataGridDesigner 继承
      }
   }
   
   这个 designer 主要要做什么事情呢?
   你至少要 render 出一段 html code 来,这样在 VS.NET IDE 的 design view 里你才能看见
   您老辛辛苦苦做的 control。
   主要通过 override 这些 methods:
   public override string GetDesignTimeHtml()
   protected override string GetEmptyDesignTimeHtml()

   比如你的控件支持 data binding 什么的,你可以考虑使用一些 sample data 去显示。
   或者多做些工作真的把 page developer 指定的 data source 绑定了显示出来。

   仔细看文档你就会发现如何建立 edit template。做了 edit template 后你 right click 你的
   控件就可以进入编辑模式,比如你的控件中包含一个 content template,你就可以把 toolbox 里
   的 asp.net textbox, checkbox 之类的东东直接 drag & drop 到里面去乐。

4。甚至还能弹出一个自己的对话框来做巨复杂的配置
   要想实现这个还要多花些功夫,你必须再做一个 MyControlComponentEditor,
   public class MyControlComponentEditor : System.Web.UI.Design.WebControls.DataGridComponentEditor  
   并且告诉 myControl 它老人家请用这个 Editor:
    [Editor(typeof(MyControlComponentEditor), typeof(ComponentEditor))]
    public class myControl : System.Web.UI.WebControls.DataGrid // 随便举个例子

   如何通过 override methods 去具体实现,自己查文档 8。

   休息,休息一下。

时间: 2024-10-31 10:39:48

ASP.NET Server Control Design Time Support的相关文章

Coping with a New Beta - Data Server Control Templ

The .NET Framework Beta 2 has many changes that will break applications written in Beta 1. Among these changes is the templates used in Data Server Controls, such as the DataGrid and DataList. These are simply syntax changes in how templates are used

Coping with a New Beta - Data Server Control Templates and Editing

server The .NET Framework Beta 2 has many changes that will break applications written in Beta 1. Among these changes is the templates used in Data Server Controls, such as the DataGrid and DataList. These are simply syntax changes in how templates a

[Wap]自定义asp.net mobile control

[Wap]自定义asp.net mobile control 编写者 日期 关键词 郑昀@ultrapower 2005-7-28 Wap ASP.NET Mobile control device adapter   Device Adapter概念 按照MSDN<Walkthrough: Adding Support for Devices>的指示: 我们要想自定义MMIT(Microsoft Mobile Internet Toolkit)提供的控件,那么可以改变Adapter在最后关头

在自定义Server Control中捆绑JS文件 Step by Step

js|server 注:本文基于.NET 2.0 和 VS2005 我们在编写 Server Control 的时候难免要用到一些客户端脚本(javascript),如何把脚本和编译好的dll一起发布就成了一个问题.把一段一段的javascript block写在cs文件里是一件很"丑陋"的事情,javascript就应呆在*.js文件里.js文件怎样才能"打包"到dll里呢?查了很多文档,最后实践下来发现有很多细节是需要注意的.整理出来,免得大家走弯路.废话无多,

ASP中用Server.Transfer实现Rewrite模拟生成静态页效

以前刚刚懂404.asp的时候,曾经幻想把所有程序代码写到404.asp中,实现一个模拟生成静态网页的站,如果程序小还可以,用404.asp实现Rewrite还是一个不错的选择,如果程序代码多达100000行,恐怕就要开始爬了 直到看到asp的Server.Transfer,用404模拟生成静态页的站的念头重新在我的脑海中浮现出来,现在即使在大的程序,也可以用ASP中的Server.Transfer轻松搞定 <!--#include file="bin/404_Query"--&

Media Server Control Panel 0.12发布 Icecast2 管理界面

MSCP(Media Server Control Panel 媒体服务器控制面板)是一款具有广泛功能的Icecast2 管理界面.管理员可以通过它创建用户,编辑访问权限,设置监听器插槽数量,启用或禁用AutoDJ,等等.用户可以通过一个基于Web的界面,进行更改Icecast2服务器的一些参数和AutoDJ.AutoDJ支持音频压缩格式,包括:MP3.Ogg Vorbis 和 FLAC格式.MSCP无需SQL服务器和运行在一个独立的http://www.aliyun.com/zixun/agg

iis架设asp网站Server Application Error问题

问题描述 iis架设asp网站Server Application Error问题 之前使用360防黑加固导到网站无访问权限,于是还原了相关的设置 还原后则出现:Server Application Error The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more d

Media Server Control Panel 0.10发布

Media Server Control Panel 0.10该版本增加音频流的转码支持.输入格式可以是MP3,OGG或AAC+.输出格式可以是MP3或OGG(立体声/单声道).立体声工具音频处理器添加到音频流转码器.(这需要SSE2支持).在"管理员"页面有较小的改动. Media Server Control Panel是一个具有综合功能的Icecast2管理接口.管理员可以创建用户,然后编辑访问权限,设置监听器插槽的数量,启用或禁用AutoDJ等,用户可以通过一个基于Web的界面

Media Server Control Panel 0.7发布

Media Server Control Panel是一个具有综合功能的Icecast2管理接口.管理员可以创建用户,然后编辑访问权限,设置监听器插槽的数量,启用或禁用AutoDJ等,用户可以通过一个基于Web的界面更改Icecast2服务器和AutoDJ的几个参数. AutoDJ支持的音频压缩格式包括MP3,Ogg Vorbis和FLAC. MSCP不需要一个独立的http://www.aliyun.com/zixun/aggregation/17117.html">Web服务器和SQL