iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >ASP.NET如何自定义控件开发
  • 885
分享到

ASP.NET如何自定义控件开发

2023-06-17 13:06:48 885人浏览 独家记忆
摘要

这篇文章主要为大家展示了“asp.net如何自定义控件开发”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ASP.net如何自定义控件开发”这篇文章吧。该控件的功能如下:显示服务端时间,并不停更新

这篇文章主要为大家展示了“asp.net如何自定义控件开发”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ASP.net如何自定义控件开发”这篇文章吧。

该控件的功能如下:

显示服务端时间,并不停更新

通过手动点击刷新按钮以ajax获取服务端***时间

能拖动

能记住在页面上的位置,页面回传后位置不变

能配置一个定时时间,一到这个时间,自动回传触发用户自定义的事件,

首先新建一个类库项目HampWEBControl,再新建一个类叫TipTime1,继承WebControl类。如果不是从已有控件中继承,一般就继承WebControl类,它是所有ASP.NET服务端控件的基类。

ASP.NET如何自定义控件开发

我们编译这个项目,再新建一个网站项目,引用HampWebControl项目,新建页面,在工具箱中拖一个TipTime1控件到页面上。

ASP.NET如何自定义控件开发

我们运行该页面,就会发现html代码如下:

ASP.NET如何自定义控件开发

就是说默认是呈现成一个span标签,可以通过重载WebControl基类的TagKey属性来改变。

ASP.NET如何自定义控件开发

这样呈现在页面上就是个DIV。 HtmlTextWriterTag是个枚举,包含了很多HTML标签。

WebControl基类的Render用来呈现内容,重载它便可以往页面上呈现任何自定义的标签。

ASP.NET如何自定义控件开发

这样在页面上就显示了一个a标签,如下图所示:

ASP.NET如何自定义控件开发

注意看,这时a标签是在DIV外面,如何将它放到DIV里面呢?这就要重载WebControl基类的RenderContents方法

ASP.NET如何自定义控件开发

这样这个a标签就在div里面了,如下图所示:

ASP.NET如何自定义控件开发

接下来为最外围的DIV加一些样式,重载基类的AddAttributesToRender方法

ASP.NET如何自定义控件开发

这里有两种写法,利用HtmlTextWriterStyle枚举或者直接写CSS属性名。

到这里大家了解了自定义控件如何呈现在页面上。我们再新建一个类TipTime2,把依旧重载TagKey为DIV,然后重载RenderContents,显示一个span标签与一个input标签。

ASP.NET如何自定义控件开发

这样页面上显示了当前服务端的时间与一个按钮,如图所示:
ASP.NET如何自定义控件开发

接下来我们来让用户可以配置按钮上的文字,为类TipTime2增加一个Text属性:

ASP.NET如何自定义控件开发

同时将呈现按钮的代码改成:

ASP.NET如何自定义控件开发

这样Text属性便出现在设计视图的属性窗口。

ASP.NET如何自定义控件开发

修改Text的值,页面上按钮上的文本也跟着变了。注意Text属性是存储在ViewState中,这样保证了回发后值不会丢失。

现在的问题是时间不会变,我们得用javascript来改变它的值。新建一个js文件TipTime2.js。

这里先要说明的是,项目中已有一个JS文件__WebControlBase.js,里面是一些公用的JS方法,比如绑定事件、获取控件坐标等,所有的方法都是

该方法的扩展方法:var HampWebControl=function(){ }

    //停止事件冒泡      HampWebControl.prototype.StopBubble = function(e) {          if (e && e.stopPropagation) {            e.stopPropagation();          } else   {              window.event.cancelBubble = true;          }      }

这样可以减少全局变量,尽可能避免与其它js代码的变量重名。我将每个控件作为HampWebControl方法的一个扩展方法存在,同时每个控件对
应一个数组,用以存储页面上所有该控件的js对象。每个控件对应一个Refresh方法,用以重新绑定事件,这是为了解决回传后的问题。

ASP.NET如何自定义控件开发
现在控件呈现成HTML的结构是<div><span/><input/></div>,有3个标签,我们需要用3个变量来分别存储它们的DOM对象,方便以后操作。

ASP.NET如何自定义控件开发

后台对HTML标签命名时以当前控件的ClientID开头,后面根据需要加后缀,这样可以一定程度上防止标签重名。由后台将控件的ClientID传过来,这样便可以获取所有DOM对象。拖动效果利用的是现成js方法,属于纯javascript效果,这里就不展开讨论了,有兴趣的童鞋可以查看示例项目源码

ASP.NET如何自定义控件开发

该方法是由后台注册脚本来调用的,如果在数组中已存在就取该对象,否则重新new一个。并调用初始化与绑定事件方法。

这时需要在后台注册该js文件才行。关键的操作时将该文件的“生成操作”属性设置为“嵌入的资源”,使得编译的时候该js文件会作为DLL文件的一部分。

ASP.NET如何自定义控件开发

接下来需要声明所需的资源文件,严格按文件夹的结构来命名。这里注册了2个JS文件:公用JS文件__WebControlBase.js与控件专用的JS文件TipTime2.js。

ASP.NET如何自定义控件开发

然后在代码中注册脚本即可。

ASP.NET如何自定义控件开发

在《道不远人 深入解析ASP.NET2.0控件开发》这本书中,注册脚本文件的代码是放在OnPreRender方法中,但是实际应用中我发现,如果将自定义控件放在UpdatePanel控件中,就会引发一些问题,所以我都放在OnLoad方法中去注册脚本文件。

注意注册脚本文件这里用了2种不同的方法。

第1种是循环Head标签里面是否存在了脚本,如果不存在,就插入一个<script>标签。

第2种直接调用.NET的注册方法。

/// <summary>        /// 向页面注册公共jacascript文件          /// </summary>          /// <param name="control">控件对象</param>        internal static void ReGISterCommonJSFile(Control control)          {              //注册jacascript文件              String jslink = "<script src='" +                          control.Page.ClientScript.GetWebResourceUrl(control.GetType(),                            "HampWebControl.includes.__WebControlBase.js")                          + "' type='text/javascript' ></script>";              Register(jslink,control);          }           /// <summary>          /// 注册资源          /// </summary>         /// <param name="strLink">资源字符串</param>        private static void Register(string strLink, Control control)           {              //为了保证资源只注册一次,循环比较,已存在了就不添加              Boolean flag = false;              for (Int32 i = 0; i < control.Page.Header.Controls.Count; i++)            {              LiteralControl lc = control.Page.Header.Controls[i] as LiteralControl;                  if (lc != null)                {                      if (lc.Text == strLink)                    {                          flag = true;                        break;                      }                  }              }              if (!flag)              {                  LiteralControl include = new LiteralControl(strLink);                control.Page.Header.Controls.Add(include);              }        }

第1种是用于注册公用的资源文件,第2种用于注册该控件特有的资源文件。 因为第2种方法只能保证多个该控件对象只注册一个脚本,但不能保证其它控件也
重复注册了该脚本,所以为了保证公用的资源文件只注册一次,就用第1种方式。
下一步就是注册要执行的脚本代码:
ASP.NET如何自定义控件开发

这里如果控件是隐藏的,就不注册。其实如果控件时放在其它容器控件中,比如Panel,而父容器控件设置为隐藏,那么该控件也不可见,但是依旧执行了注册上面的脚本的代码,所以要在前台Init方法中去判断相应的DOM对象是否存在,这里就没有多做判断。

***设置一下样式,使之变为浮动,则控件在页面上便能拖动了。

ASP.NET如何自定义控件开发

以上是“ASP.NET如何自定义控件开发”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: ASP.NET如何自定义控件开发

本文链接: https://www.lsjlt.com/news/289426.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ASP.NET如何自定义控件开发
    这篇文章主要为大家展示了“ASP.NET如何自定义控件开发”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ASP.NET如何自定义控件开发”这篇文章吧。该控件的功能如下:显示服务端时间,并不停更新...
    99+
    2023-06-17
  • winform怎么自定义控件开发
    在WinForms中自定义控件开发,可以按照以下步骤进行:1. 创建新的类,继承自现有的控件类,比如`UserControl`或`C...
    99+
    2023-10-10
    winform
  • winform如何自定义控件
    在WinForms中自定义控件通常涉及以下步骤: 创建自定义控件类:创建一个继承自现有控件(如Control或Panel)的新类...
    99+
    2024-04-09
    winform
  • Android如何自定义Switch开关按钮控件
    这篇“Android如何自定义Switch开关按钮控件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android如何自定义...
    99+
    2023-07-02
  • C#为控件添加自定义事件及自定义触发
    先随便搞个事件吧 public class TestEventrgs : EventArgs { private string _name; ...
    99+
    2024-04-02
  • 如何使用maven自定义插件开发
    这篇文章主要介绍了如何使用maven自定义插件开发的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用maven自定义插件开发文章都会有所收获,下面我们一起来看看吧。Maven 插件的命名规范一般来说,我们会...
    99+
    2023-07-02
  • Android开发手册自定义Switch开关按钮控件
    目录自定义Switch外观布局样式Drawable代码自定义Switch外观 外观定制这块属于基操了,我们利用属性 android:track 和 android:thumb 定制 ...
    99+
    2024-04-02
  • winform自定义控件开发的方法是什么
    在WinForms中开发自定义控件的方法如下:1. 创建一个新的类并继承自现有的控件类(如Control、UserControl)或...
    99+
    2023-09-09
    winform
  • Android开发怎么自定义实时图表控件
    本文小编为大家详细介绍“Android开发怎么自定义实时图表控件”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android开发怎么自定义实时图表控件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。演示环境开发工...
    99+
    2023-07-02
  • Android如何自定义评分控件
    今天小编给大家分享一下Android如何自定义评分控件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。自定义参数为了方便扩展,...
    99+
    2023-06-30
  • Android开发自定义双向SeekBar拖动条控件
    目录目标:双向拖动的自定义View实现步骤自定义属性获取确定自定义view尺寸绘制相关的内容部分滑动事件处理目标:双向拖动的自定义View 国际惯例先预览后实现 我们要实现的就是一...
    99+
    2024-04-02
  • wpf如何自定义控件属性
    在WPF中,可以通过创建自定义控件继承自现有的控件,并添加自定义属性来实现自定义控件属性。 以下是一个简单的示例,展示了如何创建一个...
    99+
    2023-10-24
    wpf
  • winform如何自定义控件列表
    在WinForm中,您可以通过继承现有控件或者创建自定义控件来自定义控件列表。以下是一些常见的方法: 继承现有控件:您可以继承现...
    99+
    2024-04-02
  • WPF自定义控件如何实现
    今天小编给大家分享一下WPF自定义控件如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。方式一:基于现有控件进行扩展,如...
    99+
    2023-07-05
  • android怎么自定义开关控件
    要自定义开关控件,可以使用以下步骤:1. 创建一个自定义的开关控件类,继承自Switch或CompoundButton类。2. 在自...
    99+
    2023-08-16
    android
  • C#怎么为控件添加自定义事件及自定义触发
    本文小编为大家详细介绍“C#怎么为控件添加自定义事件及自定义触发”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么为控件添加自定义事件及自定义触发”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。先随便搞个事件...
    99+
    2023-06-30
  • Android如何自定义View歌词控件
    本篇内容介绍了“Android如何自定义View歌词控件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录前言一、 歌词解析歌词实体类Lrc...
    99+
    2023-06-20
  • qt如何自定义可拖动控件
    要自定义可拖动的控件,可以按照以下步骤进行操作:1. 创建一个继承自QWidget或QFrame的自定义控件类,例如MyDragga...
    99+
    2023-10-10
    qt
  • Android自定义控件如何在XML文件中使用自定义属性
    目录前言一、为什么需要自定义控件二、具体步骤1.首先我们创建一个 layout xml文件:2.为自定义控件创建java类:3.在res/values下,新建一个attrs.xml文...
    99+
    2023-05-14
    Android XML自定义属性 Android 自定义控件
  • Angular19 中如何自定义表单控件
    这期内容当中小编将会给大家带来有关Angular19 中如何自定义表单控件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 需求当开发者需要一个特定的表单控件时就需要自己...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作