Asp.net WebControls基本概念

 

定义

       WebControls可以通过拖放放置到asp.net页面上,支持设计时设置属性,封装一些好的WebControls可以极大的提高代码效率和代码质量。

几个概念

       Web控件库项目

              创建WebControls在vs中可以建立Web控件库项目,改项目下的类文件默认都继承自System.Web.UI.WebControls.WebControl

       Render

               创建WebControl要重写该方法 ,该方法用于向输出流中输出html,是WebControl在页面上的显示。相当于WinForm控件的OnPrint()

               理解自定义 Web 窗体控件的关键在于 Render 方法,该方法在概念上与 Windows 窗体 OnPaint 方法相同,区别仅在于前者发出 HTML,而后者则发出 GDI 调用。当 ASP.NET 服务器框架为响应用户请求而汇编 Web 窗体页时,它将创建页上列出的控件,设置这些控件的属性和持久性数据,然后调用它们的各个 Render 方法。框架实际上是告诉控件:“你是活动的,并正处于预期的状态。你需要告诉我你的外观,因为我没有别的办法来了解。”Web 窗体控件的作者会在 Render 方法中放入一些代码,以发出 HTML,告知浏览器如何根据控件的当前状态和属性,以及与控件有关的环境中的任何其他信息来显示控件的外观。

              当 ASP.NET 框架调用控件的 Render 方法时,将传递一个 System.Web.UI.HtmlTextWriter 类型的对象。这在概念上类似于 OnPaint 方法在 Windows 窗体控件中收到的 System.Windows.Forms.PaintEventArgs 的 Graphics 成员。两者都代表到框架的连接,该框架将输出定位到其相应的位置。HtmlTextWriter 包含的方法、属性和常数使得您的控件能够将 HTML 发送到将被发送到客户端浏览器的输出页上。在示例代码中,我首先调用了方法 AddStyleAttribute,该方法在内部创建一个称为 style 的 HTML 属性,将其值设置为控件所继承的 ForeColor 属性的值,然后将其添加到内部缓冲区。可以通过对 AddStyleAttribute 方法的附加调用向缓冲区添加 style 属性的附加值;通过调用 AddAttribute 方法,可以添加其他属性

       Page.GetPostBackEventReference

               实现该方法需要继承接口IPostBackEventHandler,用于处理PostBack,可以在这里面处理视图状态也控件事件。

        方法 Page.GetPostBackEventReference 导致框架生成页上的 HTML 脚本,并返回调用它的 HTML 字符串

        服务器端控件通过实现称为 IPostBackEventHandler 的接口并重写 RaisePostBackEvent 方法来接受该输入通知

    事件处理

        Web 窗体控件中的事件处理包括两个必需的部分,和一个可选的第三部分。首先,控件的 Render 方法必须生成客户端 HTML,这些 HTML 在客户端发生您所关注的事件时导致对控件的回发。其次,您的控件必须实现 IPostBackEventHandler 接口,以便 ASP.NET 能够通知您的控件它收到了该回发,并传递有关它的附加信息。接下来是一个可选的部分,您的控件可以(很可能会选择)激发 .NET 事件,这样其他控件就可以接收所发生的这些事件的通知

    ViewState(视图状态)

     这个就不用解释了

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Web controls使创建forms 和HTML controls.的工作将会变得简单易行。例如在ASP中典型的选择框 selectbox里,你不得不创建一个循环以便让控制系统装入数据。但在ASP.net里,你将会拥有一个"data-bound",这意味着它会与数据源连接,并会自动装入数据。这些功能听起来简直是妙不可言,但是让我们细细的来检验一下。   通过传统的ASP和ADO,你能够选择在哪里放置数据库游标(服务器一边或是用户一边),至于其它的,是依靠你想要创建的性能和功能类型来做决定。但是在ASP+里,你不再有选择。因为在web controls和服务器之间的链接,迫使你不得不将所有的事物都放置在客户方。对于客户和服务器来说,不啻于一个性能中心,因为它必须将所有的数据存储在本地内存里。   Web controls 也在严格的XML 术语中引进了新的语法。因此,你会不再有比较松散的代码编辑过程,你必须关闭所有的标记符,使用定义等等。当然,大多数人对于适应这个功能会感到非常痛苦,但是严格的的代码编辑过程通常意味着更少的错误。   另一方面关于Web forms 缺陷在于,要想使用Web form的大部分功能,你必须使用forms 的POST 方法;例如,state管理。当你使用GET方法时,所有的all best 会被关闭掉,你就不能使用相应的功能。这个限制实在太没必要了。   ASP.NET Server Controls   许多系统过去的组成部分现在成为ASP.NET Server Controls。例如:ad rotator已升级,并开始用XML来存储它的信息,但不仅仅于此。这儿有一整套控制系统,它可以做任何事情,从代为管理你的表单状态到显示日历、桌面。事实上,几乎每HTML元素都有ASP.NET Server Controls,通过ASP.NET Server Control,可以与HTML元素程式化的相互影响。例如,你不再需要为了维持一个在LISTBOX里选定的 OPTION而大走弯路。你只需指示LISTBOX 在服务器里运作并代你进行管理就可以了。更为方便的是,你只需设定好程序,LISTBOX就会按指令依次显示选定的项目。 也许在这个新的 controls中最有趣的莫过于 DataGrid。Datagrid是一个多列的数据绑定网格,通过它你可以轻而易举的将数据置于其中。它同时提供分页、排序等所有你所期望的功能。   记录丢失,对于程序员来说是一个非常严重的事情。在新的系统中, 中心对象是Dataset。它与recordset相类似,是数据内在存储记忆的副本。Dataset对于您的开发来说是中心所在,但是现在,我只能说它只是相近与XML,使程式在简单化和统一化的过程中,相对简单。你还是可以用你过去用过的来处理一切…(除了服务器端游标)… 
Ajax框架介绍   虽然大部分开发人员在过去使用过XMLHttp或者使用Iframe来加载数据,但仅到现在我们才看到传统的开发人员和公司开始采用这些技术。就像新的编程语言或模型伴随着更多的痛苦,开发人员需要学习新的技巧及如何最好利用这些新技术。   AJAX模式   许多重要的技术和AJAX开发模式可以从现有的知识中获取。例如,在一个发送请求到服务端的应用中,必须包含请求顺序、优先级、超时响应、错误处理及回调,其中许多元素已经在Web服务中包含了,就像现在的SOA。AJAX开发人员拥有一个完整的系统架构知识。同时,随着技术的成熟还会有许多地方需要改进,特别是UI部分的易用性。   AJAX开发与传统的CS开发有很大的不同。这些不同引入了新的编程问题,最大的问题在于易用性。由于AJAX依赖浏览器的JavaScript和XML,浏览器的兼容性和支持的标准也变得和JavaScript的运行时性能一样重要了。这些问题中的大部分来源于浏览器、服务器和技术的组合,因此必须理解如何才能最好的使用这些技术。   综合各种变化的技术和强耦合的客户服务端环境,AJAX提出了一种新的开发方式。AJAX开发人员必须理解传统的MVC架构,这限制了应用层次之间的边界。同时,开发人员还需要考虑CS环境的外部和使用AJAX技术来重定型MVC边界。最重要的是,AJAX开发人员必须禁止以页面集合的方式来考虑Web应用而需要将其认为是单个页面。一旦UI设计与服务架构之间的范围被严格区分开来后,开发人员就需要更新和变化的技术集合了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值