返回顶部
首页 > 资讯 > 精选 >ASP.NET组件设计的知识点有哪些
  • 381
分享到

ASP.NET组件设计的知识点有哪些

2023-06-18 00:06:10 381人浏览 安东尼
摘要

本篇内容介绍了“asp.net组件设计的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ASP.NET组件设计一、什么是ASP.N

本篇内容介绍了“asp.net组件设计的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

ASP.NET组件设计一、什么是ASP.NET组件?

查看MSDN,微软是这样给组件定义的:在 .net Framework 中,组件是指实现 System.ComponentModel.IComponent 接口的一个类,或从实现 IComponent 的类中直接或间接派生的类。这是从纯语言(技术)角度下的定义,通俗的讲,组件是“可独立运作的软件单元”,这里强调独立运作,也就代表着组件必须拥有低耦合性、高重用性等特点。微软将软件划分为两部分:其一是Component,意指具备特定功能、可独立运作、不具备UI接口的单元;其二是Control,也就是我们常说的控件,意指具备特定功能、可独立运作的UI接口单元。

ASP.NET组件设计二、学习ASP.NET组件需要掌握的知识

任意掌握一门.net语言,建议使用C#,C#是一门全新的语言,但又借鉴了c++和JAVA的语法,同时引入了一些新概念,在程序员中口啤不错。

理解IIS的运行机制和ASP.NET的运行模式。

熟练掌握javascript,该脚本语言强大的功能在处理客户端动作时表现非常出色,基本上所有的自定义组件都离不开javascript,同时,CSS和Dhtml也是要心知肚明的。没办法,他们很少会单独出现,总是喜欢集体演出。

ASP.NET组件设计三、ASP.NET组件设计的难度

这个问题不用问,也许您猜出了几分,一个字:难。

您也许会有所察觉,在编写ASP.NET应用程序时,很少会对viewstate作深入的研究,原因很简单,因为ViewState本身设计的用户对象本来就不是应用程序员,而是组件设计员。如果不是因为客户端需要,您也不会在ASP.NET中编写大量的javascript脚本,而在组件设计中,很难逃脱干系。不止这些,是否设计成服务器组件?我们的组件是继承Control、还是继承WEBControl或是继承Component?在组件中,需要自定义Attribute吗?需要实现数据绑定吗?如何绘制组件的外观?如何和IIS通讯?需要post-back吗?很多很多的问题,都需要组件设计者——辛苦的您去一一考虑。

所以,如果您不屑一顾地说:不就是设计一个组件吗?这有何难!那么,我会嘿嘿一笑,因为我知道,您一定在开玩笑。

但是,千万别怕,“程序员需要探索精神哦!”

ASP.NET组件设计四、基类的选择

如果我们设计的是一个WEB可视控件,并且构成WEB页的一部分,那么可以继承Control类或者WebControl类。如果是一个非可视控件,可以继承Component,继承此类的控件设计时不会出现在页面上,而是出现在Component Tray中。还记得OpenFileDialog控件吗?这个文件打开对话框控件就是出现在Component Tray控件中的。

如果我们只是在已有的控件基础上增强功能,那么就继承该已有的控件吧。

ASP.NET组件设计五、实践出真知

假设我们要设计一个组件,该组件只允许用户输入数字,该验证工作自然应该放到客户端,客户端的验证脚本可以这样写:

﹤HTML﹥   ﹤HEAD﹥   ﹤META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"﹥   ﹤TITLE﹥﹤/TITLE﹥   ﹤script language="javascript"﹥   function Virty(ctrl)   {   if (event.keyCode == 13)   return true   if (event.keyCode ﹤ 48 || event.keyCode ﹥ 57)   return false;   else   return true;   }   ﹤/script﹥   ﹤/HEAD﹥   ﹤BODY﹥   ﹤fORM method="POST" ﹥   ﹤p﹥   ﹤input type="text" name="T1" size="20" OnKeyPress="javascript:return Virty(this);"﹥   ﹤/p﹥   ﹤/form﹥   ﹤/BODY﹥   ﹤/HTML﹥

当然,这些验证代码不能由用户去写,应该由组件设计者去写,也就是说,当用户把该组件从工具箱中拖到页面上后,运行时应该自动生成验证代码。向WEB页绘制代码,我们重写OnPreRender()方法就可以了。

在重写OnPreRender()方法之前,先写定义几个常量:

private const string SCP_NUMBER_ONLY_SCRIPT_ID="{29FD7A41-49FD-4fc4-AFA9-6A0B87***1A51}";   private const string SCP_NUMBER_ONLY_HOOK="return Virty(this);";   private const string SCP_NUMBER_ONLY_SCRIPT=   "﹤script language=\"JavaScript1.2\"﹥\nfunction Virty (ctrl)\n{{\n"+   "if (event.keyCode == 13)\n return true;\n if (event.keyCode ﹤ 48 || event.keyCode ﹥ 57)\n   return false;  \n else\n return true;\n}}"+   "﹤/script﹥";

下面的方法用于验证代码的生成:

private void RenderJavaScript()   {   if(!Page.IsClientScriptBlockReGIStered(SCP_NUMBER_ONLY_SCRIPT_ID))   Page.RegisterClientScriptBlock  (SCP_NUMBER_ONLY_SCRIPT_ID,  string.Format(SCP_NUMBER_ONLY_SCRIPT,base.ID));   }

为什么会有Page.IsClientScriptBlockRegistered(SCP_NUMBER_ONLY_SCRIPT_ID)呢?我们想象一下,如果在WEB页中有十个该控件,那是不是就要输出十个这样的脚本?显然,这是画蛇添足了,所以,我们要用IsClientScriptBlockRegistered()判断该脚本是否在客户端输出,如果脚本在客户端已注册,则不再输出了。

接下来就是重写OnPreRender()方法了,该方法负责向客户端绘制脚本。

protected override void OnPreRender(EventArgs e)   {   base.OnPreRender (e);   RenderJavaScript();   }

大家应该注意到,该脚本需要事件触发才会执行,当用户从浏览器输入数据时,如果是非数字,则忽略该动作,否则才接受输入。这就需要OnKeyPress="javascript:return Virty(this);"这段代码了。那么,这段代码怎么向客户端输出呢?重写AddAttributesToRender()方法吧,该方法负责绘制组件的属性。于是,我们写了下面一段代码:

protected override void AddAttributesToRender(HtmlTextWriter writer)   {   base.AddAttributesToRender(writer);    writer.AddAttribute("OnKeyPress",SCP_NUMBER_ONLY_HOOK);   }

ASP.NET组件设计***的源码如下:

using System;   using System.Text;   using System.Drawing;   using System.Web;   using System.Web.UI;   using System.Web.UI.WebControls;   namespace PowerASP.NET.Controls   {   [ToolboxBitmap(typeof(NumberEditor),"PowerASP.NET.Controls.NumberEditor.bmp")]   public class NumberEditor:BaseEditor   {   private const string SCP_NUMBER_ONLY_SCRIPT_ID="{29FD7A41-49FD-4fc4-AFA9-6A0B87***1A51}";   private const string SCP_NUMBER_ONLY_HOOK="return NumberEditor_KeyPress_Handle(this);";   private const string SCP_NUMBER_ONLY_SCRIPT=   "﹤script language=\"JavaScript1.2\"﹥\nfunction NumberEditor_KeyPress_Handle(ctrl)\n{{\n"+   "if (event.keyCode == 13)\n return true;\n if (event.keyCode ﹤ 48 || event.keyCode ﹥ 57)\n return false;\n else\n return true;\n}}"+   "﹤/script﹥";   //rending number-limit javaScript.   private void RenderJavaScript()   {   if(!Page.IsClientScriptBlockRegistered(SCP_NUMBER_ONLY_SCRIPT_ID)) Page.RegisterClientScriptBlock(SCP_NUMBER_ONLY_SCRIPT_ID,string.Format(SCP_NUMBER_ONLY_SCRIPT,base.ID));   }   protected override void AddAttributesToRender(HtmlTextWriter writer)   {   base.AddAttributesToRender(writer);   writer.AddAttribute("OnKeyPress",SCP_NUMBER_ONLY_HOOK);   }   protected override void OnPreRender(EventArgs e)   {   base.OnPreRender (e);   RenderJavaScript();   }   public NumberEditor():base()   {   }   }   }

“ASP.NET组件设计的知识点有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: ASP.NET组件设计的知识点有哪些

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

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

猜你喜欢
  • ASP.NET组件设计的知识点有哪些
    本篇内容介绍了“ASP.NET组件设计的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ASP.NET组件设计一、什么是ASP.N...
    99+
    2023-06-18
  • ASP.NET控件开发基础知识点有哪些
    这篇文章主要介绍ASP.NET控件开发基础知识点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!ASP.NET控件开发基础的总结1.1何处继承自定义控件一般从以下几个基类(此处不包含数据控件)一.Control类...
    99+
    2023-06-18
  • JAVA图形设计卷的知识点有哪些
    本篇内容介绍了“JAVA图形设计卷的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!注意1:在AWT中提供的用户接口构件(如按钮、...
    99+
    2023-06-03
  • 网站网页设计知识点有哪些
    小编给大家分享一下网站网页设计知识点有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在进行网页设计的时候需要使用到一些软件,其中像是FrontPage就是经常...
    99+
    2023-06-08
  • Java数组知识点有哪些
    这篇文章主要介绍“Java数组知识点有哪些”,在日常操作中,相信很多人在Java数组知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java数组知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-30
  • JavaScript中数组的知识点有哪些
    这篇文章主要讲解了“JavaScript中数组的知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript中数组的知识点有哪些”吧!数组...
    99+
    2024-04-02
  • JavaScript事件的知识点有哪些
    今天小编给大家分享一下JavaScript事件的知识点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2024-04-02
  • Web的事件知识点有哪些
    本篇内容主要讲解“Web的事件知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Web的事件知识点有哪些”吧!web中的事件事件并不是JavaScript的核心部分,他们是在浏览器的We...
    99+
    2023-06-02
  • SQL Server索引设计基础知识点有哪些
    本篇内容主要讲解“SQL Server索引设计基础知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL Server索引设计基础知识点有哪些”吧!索引设计背景知识...
    99+
    2023-07-05
  • oracle事件知识点有哪些
    这篇文章主要讲解了“oracle事件知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle事件知识点有哪些”吧!一、Oracle跟踪文件  ...
    99+
    2024-04-02
  • mysql执行计划知识点有哪些
    这篇文章主要讲解了“mysql执行计划知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql执行计划知识点有哪些”吧! The DESCRI...
    99+
    2024-04-02
  • 云计算基础知识点有哪些
    本篇内容主要讲解“云计算基础知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“云计算基础知识点有哪些”吧!数据的可用性以及完整性是用户使用云服务的根本。云计算因按需服务、资源池共享、按服...
    99+
    2023-06-27
  • MySQL的知识点有哪些
    本篇内容主要讲解“MySQL的知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL的知识点有哪些”吧! 1.在Ce...
    99+
    2024-04-02
  • Elasticsearch的知识点有哪些
    本篇内容主要讲解“Elasticsearch的知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Elasticsearch的知识点有哪些”吧!本篇主要内...
    99+
    2024-04-02
  • Css的知识点有哪些
    这篇文章主要为大家展示了“ Css的知识点有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ Css的知识点有哪些”这篇文章吧。块元素、内联元素,是一个元素,...
    99+
    2024-04-02
  • HTML5的知识点有哪些
    这篇文章主要讲解了“HTML5的知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML5的知识点有哪些”吧!1 :基于HTML5的移动Web应用Canvas绘图:通过获取HTML...
    99+
    2023-06-17
  • JavaScript8的知识点有哪些
    这篇文章主要介绍“JavaScript8的知识点有哪些”,在日常操作中,相信很多人在JavaScript8的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript8的知识点有哪些”的疑...
    99+
    2023-06-27
  • ECharts的知识点有哪些
    本文小编为大家详细介绍“ECharts的知识点有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“ECharts的知识点有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。简介ECharts(Enterpris...
    99+
    2023-06-27
  • yolov5的知识点有哪些
    这篇文章主要讲解了“yolov5的知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“yolov5的知识点有哪些”吧!一、yolo中txt文件的说明:二、yolo跑视频、图片文件的格式...
    99+
    2023-07-02
  • Vue的知识点有哪些
    本篇内容介绍了“Vue的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.官方介绍Vue (读音 /vjuː/,类似于 view...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作