Hello,朋友们,新年快乐.很长时间没写博客了,一直在想写这一篇,可没想好怎么写,就一直放着.现在终于有时间了,那么来继续我们的话题吧.自定义控件.如果你还不熟悉自定义控件开发的话,还请看看我以前写了几篇,希望对你有帮助
1.1何处继承
自定义控件一般从以下几个基类(此处不包含数据控件)
一.Control类
(所有服务器控件的基类,算是比较底层的类,如果控件功能比较简单,要求不多,可直接继承此类.)
二.WebControl类(标准控件的基类,继承此类,你可以继承其丰富的公共属性,若标准控件中的控件没有你需要的控件,你可以继承此类)
三.

我们只需要使用ToolboxBitmap元数据就可以了,你需要了解其构造函数,用法如下

asp.net控件开发基础(15)namespace AspDemo.CustomComponents
}

注意点:

(1)图标的位置位于,以你默认命名空间为根目录,以点语法的方式来指定图标位置,(即图标路径为/Resources)
否则的话以你控件类型命名控件为根目录,(即图标路径为CustomComponents/Resources),大家可以尝试一下
(2)在属性面板指明图标文件为嵌入的资源,如下图
asp.net控件开发基础(15)

2.嵌入其他资源文件

记得以前我们做了一个控件需要一个js文件,当需要使用这个控件的话,则也需要使用js文件,这样给别人用的话很不方面,我们可以把js文件作为嵌入资源使用来解决这一问题.以下例子来自MSDN,这里只是让大家知道如何使用

asp.net控件开发基础(15)[assembly: WebResource("AspDemo.CustomComponents.Resources.AspDemo.CustomComponents.ResourceLabel.image1.jpg""image/jpeg")]
asp.net控件开发基础(15)[assembly: WebResource(
"AspDemo.CustomComponents.Resources.AspDemo.CustomComponents.ResourceLabel.help.htm""text/html", PerformSubstitution = true)]
asp.net控件开发基础(15)
namespace AspDemo.CustomComponents
}

注意点:
(1)跟上面第二点一样
(2)路径为以默认命名空间为根路径,然后以点语法获取文件路径
(AspDemo.CustomComponents为命名空间,Resources为文件夹,AspDemo.CustomComponents.ResourceLabel.help.htm此为文件名称)

OK,这样就算完成了

二.持久性控件状态

下面也只给出部分代码(来自MSDN),这方面资料我相信已经很多了,只当补充

        }

三.客户端回调

ASP.NET 2.0 Unleashed单独列出了一章来讲JavaScript在自定义控件中的使用,我想大家还是看书上例子吧,个人感觉很好,非常容易理解.而且学会这个的话,还可以看的懂AtlasControlToolkit里面的几个控件,几乎都用到了这种技术.

四.配置文件

(1)在web.config中预先定义控件标签和注册控件,从而可以在每个页面省去
使用 @ Register 指令

asp.net控件开发基础(15)    <pages>
asp.net控件开发基础(15)      
<controls>
asp.net控件开发基础(15)
asp.net控件开发基础(15)        
<add tagPrefix="aspDemo" namespace="AspDemo.CustomComponents" assembly="AspDemo.CustomComponents"/>
asp.net控件开发基础(15)      
</controls>
asp.net控件开发基础(15)
asp.net控件开发基础(15)    
</pages>


(2)控件映射

url可以映射,控件也可以,我们在配置Ajax环境的时候就用到了此方法

asp.net控件开发基础(15)<pages>
asp.net控件开发基础(15) 
<tagMapping>
asp.net控件开发基础(15)        
<add tagType="System.Web.UI.WebControls.RequiredFieldValidator" mappedTagType="System.Web.UI.Compatibility.RequiredFieldValidator, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
asp.net控件开发基础(15)        
asp.net控件开发基础(15)        </pages>

五.在工具栏上隐藏控件

再讲一个小东西,当定义的控件,不需要在工具栏上显示的话,可以用此元数据把控件隐藏起来
asp.net控件开发基础(15)[ToolboxItem(false)]
asp.net控件开发基础(15)       
public class ImageControl : WebControl
    }


好了,写完这一篇了,如哪里有错误还请大家指出,以上全凭经验写的

以下提供所有例子的代码,希望对大家有用

示例代码下载

相关文章:

  • 2022-01-08
  • 2021-08-19
  • 2021-09-28
  • 2021-08-22
  • 2021-10-14
  • 2021-06-30
猜你喜欢
  • 2021-12-29
  • 2022-03-10
  • 2021-10-06
  • 2021-10-05
  • 2022-02-11
相关资源
相似解决方案