博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net 事件模型
阅读量:6219 次
发布时间:2019-06-21

本文共 1132 字,大约阅读时间需要 3 分钟。

asp.net的原始设计构想,就是要让开发人员能够像 VB 开发工具那样,可以使用 式程序开发模式 (Event-Driven Programming Model) 的方法来开发网页与应用程序,若要以ASP技术来做到这件事的话,用必须要使用大量的 ,像是查询字符串或是窗体字段数据来识别与判断对象的来源、事件流向以及调用的函数等等,需要撰写的代码量相当的多,但asp.net很巧妙利用窗体字段和JavaScript脚本把事件的传递模型隐藏起来了。
asp.net的事件模型是由以及数个 Hidden Field 组合而成,基于 HTTP 模型的限制,所有的网页程序在运行结果输出到用户端后,程序就会退出运行,
为了维护在asp.net网页与控件的状态数据,因此在输出asp.net控件时,asp.net会将部份状态数据储存到网页的 Hidden Field 中,这类型的状态数据称为 ViewState(ID 为 __VIEWSTATE),在服务器端即会被解译出状态与事件数据。在大多数的内置 Web 控件中都有使用到这个机制,因此在使用大量asp.netWeb 控件的网页中,会有许多的 ViewState 会存放在网页中并随着 HTTP 数据流输出到用户端,ViewState 在输出时,会被加密为一组 字符串,其金钥值定义在计算机中,并且每一个对象都会被序列化 (serialize) 成字符串(因此若是自定义对象要放到 ViewState 时,则应要让它支持序列化),再输出到 __VIEWSTATE 字段中,在每次的网页来回时都会被传输,较大的 ViewState 会让网页大小膨胀,不利于快速的 ,不过asp.net本身有提供将 ViewState 关闭的功能,因此如果控件不需要状态保存时,可将它关闭以减少输出的大小。
为确保控件的事件能够确实被引发,让事件驱动能够被运行,因此控件事件引发命令时需要的参数,是交由 JavaScript 脚本在用户端引发时,
填入另一个 Hidden Field(ID 为 __EVENTTARGET 以及 __EVENTARGUMENT),并且引发窗体的送出指示 (submit)传送到服务端后,服务端的 HttpApplication 中的工具函数会解析 __EVENTTARGET 和 __EVENTARGUMENT 字段中的信息,并且交由控件所实现的 RaisePostBackEvent() 来引发事件,并由 .NET Framework 内部的事件处理器制接手处理(调用控件设置的事件处理程序)。

转载于:https://www.cnblogs.com/muxueyuan/p/3711245.html

你可能感兴趣的文章
Eclipse快捷键大全(转载)
查看>>
众包平台发布一波关于运维开发需求,多少钱由你来报
查看>>
VLAN与Trunk配置
查看>>
PHP SESSION信息保存在哪
查看>>
原创:软件架构那点事儿(三)
查看>>
Java Web开发环境的搭建(一)
查看>>
情感生活 文章写的很好
查看>>
java获取txt文件编码格式
查看>>
ccna 05 管理cisco设备
查看>>
通过C打开网页的几种方法
查看>>
rman 备份恢复
查看>>
ubuntu下安装mysql
查看>>
书”软技能:代码之外的生存指南“读后感三(学习)
查看>>
Git使用问题
查看>>
centos7 更新源
查看>>
优化Linux下的内核TCP参数来提高服务器负载能力
查看>>
通过 ulimit 改善系统性能
查看>>
PHP封装一个遍历文件夹下面得所有的文件的类
查看>>
jquery ui (一)简介
查看>>
inotify+rsync数据同步
查看>>