惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Vulnerabilities – Threatpost
U
Unit 42
F
Fortinet All Blogs
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
F
Full Disclosure
月光博客
月光博客
Engineering at Meta
Engineering at Meta
博客园_首页
The Register - Security
The Register - Security
G
Google Developers Blog
The Cloudflare Blog
博客园 - Franky
K
Kaspersky official blog
A
Arctic Wolf
Scott Helme
Scott Helme
C
Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
C
Check Point Blog
NISL@THU
NISL@THU
AI
AI
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog
Project Zero
Project Zero
The GitHub Blog
The GitHub Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
Vercel News
Vercel News
T
Tor Project blog
P
Privacy International News Feed
D
Docker
I
Intezer
L
LangChain Blog
P
Proofpoint News Feed
Security Latest
Security Latest
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
博客园 - 聂微东
AWS News Blog
AWS News Blog
Martin Fowler
Martin Fowler
P
Privacy & Cybersecurity Law Blog
V
V2EX
Last Week in AI
Last Week in AI
C
Cybersecurity and Infrastructure Security Agency CISA
The Hacker News
The Hacker News
T
Tenable Blog
Blog — PlanetScale
Blog — PlanetScale
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog

博客园 - aimar

常见的 Web 项目转换问题及解决方案(转载) 在VS2005 正确地创建、部署和维护由1.1迁移到ASP.NET 2.0 应用程序 ajax用户控件中读取session的问题 - aimar - 博客园 世界杯分组与赛程 可否在vs2005中开发asp.net1.1的项目? 试用了一下google的个性化主页 连接sql2005 SqlServer2000的xml功能 DotNet2.0中上传文件 - aimar - 博客园 Oracle相关资源 关于使用存储过程的一些好处以及注意事项 DataGrid生成序号列 - aimar - 博客园 asp.net常用函数 Asp.Net2.0编译模式 Asp.Net2.0的改变 ASP.NET 2.0 Beta2中页面编译模型的变化 数据库访问程序块的效率问题 Rss应用(二) 抽取Rss Rss应用(一) 创建rss
Asp.net WebControls基本概念
aimar · 2006-04-27 · via 博客园 - aimar
 

定义

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

几个概念

       Web控件库项目

              创建WebControlsvs中可以建立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(视图状态)

     这个就不用解释了