[转]ASP.NET效率陷阱——Attributes
ASP.NET效率陷阱——Attributes |
引:众所周知,在编写WebCustomControl时,继承于WebControl基类的Attributes以及其Attributes.CssStyle属性是十分常用和重要的。但就是这两个重要的属性,如果开发中使用不当却会带来莫名其妙的效率问题。 众所周知,在编写WebCustomControl时,继承于WebControl基类的Attributes以及其Attributes.CssStyle属性是十分常用和重要的。但就是这两个重要的属性,如果开发中使用不当却会带来莫名其妙的效率问题。 由于html的灵活性和不完备性,导致了WebControl基类没有完整的表现html元素所提供和支持的所有标签属性和CSS属性(当然由于不同browser的兼容问题,要提供完备的属性是不可能的)。又由于很多html标签属性和CSS属性都是很生僻的,很少或极少被使用,如果要完备的支持,反而会成为WebControl的负担。所以Attributes和Attributes.CssStyle这两个属性很好的解决了这个问题,当然这两个属性除了支持应有的html标签属性和CSS属性外,还支持任何合法的自定义key/value对。这里要讨论的问题就来之这个对自定义key/value对的支持上。 Attributes属性的类型是一个AttributeCollection,本来很自然的一个东西,可是不知道怎么搞得,AttributeCollection的构造函数却需要一个StateBag参数: public AttributeCollection(StateBag bag) 这样的结果就是,Attributes和Attributes.CssStyle可能会被保存在ViewState中,事实上ASP.NET默认确实会保存其中的内容到ViewState中。 这种设计真的是让人觉得莫名其妙,在大家对ViewState效率问题的讨论中,觉得ViewState确实是鸡肋,用来保持一些服务器状态和数据让大家觉得方便也就算了。可是居然把和UI相关的内容都一股脑存到ViewState里,真的是疯狂。 下面是使用Attributes定义了一些自定义内容后的ViewState的情形: 实际上我在编写控件时,从来没有想过要保持Attributes和Attributes.CssStyle,也没有想过要再次使用其中的数据。而且这个默认保存到ViewState的行为居然不能定制(至少我还没有发现),后来想到在ASP.NET页面生存期中,SaveState结束在PreRender中,所以在Render事件中使用Attributes和Attributes.CssStyle的就不会保存到ViewState中去。 修改代码: protected override void OnPreRender(EventArgs e) 为如下形式: protected override void Render(HtmlTextWriter output) 就不会再将Attributes和Attributes.CssStyle保存到ViewState中了,上面那个AnalysisReport按上面的示例修改后,绑定同样数据的运行效果为: LoadState的代价也大大降低,其开销为: |
转载于:https://www.cnblogs.com/wsky/articles/835205.html
[转]ASP.NET效率陷阱——Attributes相关推荐
- Asp.net MVC 4 Attributes特性
Attributes特性 ActionFilterAttribute Represents the base class for filter attributes. 代表筛选器属性的基类. Acti ...
- asp+MsSQL2000模拟Html静态文件缓存
这是 JavaScript 写的asp, 看不懂的完了. 其实我根本不想发出来的,因为夸我的人太少了. 如果你以后还想来点经典的怪异思维代码,来,夸我两句. 此代码目的: 不用asp创建Html文件的 ...
- [转] ASP.NET中使用javascript
1.使用Page.ClientScript.RegisterClientScriptBlock 使用 Page.ClientScript.RegisterClientScriptBlock可以防止ja ...
- 关键词优化外包陷阱,你中招了吗?
企业为了在短时间扩大网络营销,将其提上销售预案,同时为了节省企业成本多会选择将SEO关键词优化外包于专业的网络公司.孰不知,就SEO行业混乱局面,很多是选择采用了黑帽手法,相对于正常优化他们多以价格取 ...
- 效率源希捷自校准配套专修软件 v1.0 绿色
Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...
- 效率源大容量硬盘检测修复程式 v3.0 光盘版 怎么用
Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...
- 效率源希捷自校准配套专修软件 免费
Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...
- php与asp.net的选择器,aspx是什么文件
aspx文件是微软的在服务器端运行的动态网页文件,而不像静态的html文件,它通过IIS解析执行后可以得到动态页面,是微软推出的一种新的网络编程方法,而不是asp的简单升级. aspx文件是微软的在服 ...
- STL的remove函数和list的remove成员函数
今天看书刚刚看的,就记录下来吧.这可能是老生常谈了,权且作为一个警醒的例子吧. 大家都知道STL有两个非常重要的组成部分,容器和算法. 算法就是一个个的函数,通过迭代器和容器关联在一起,完成一些工作. ...
最新文章
- linux----------CentOS的一些除了yum安装以外的基本操作命令。
- Squid配置二级代理(父代理)
- tp5中mysql使用REGEXP 正则匹配
- dial tcp xxx: connectex: A connection attempt failed
- 随想录(设计软件模块的接口)
- 阿里AI实验室负责人浅雪:从不淘宝购物的马云是天猫精灵用户
- 三宝小精灵机器人_三宝小精灵幼育机器人-引领幼教AI新浪潮
- DeskPins v1.32 绿色汉化版
- 谷歌浏览器的视频下载插件推荐
- 超详细VRRP基础配置
- 应运而生的教学工具——《爱上micro:bit》读书笔记
- 【测试开发】Pytest—Html测试报告定制及封装
- 水果忍者腾讯版 v1.0.2 官方安卓版下载
- 给想去阿里面试的同学一些意见
- FPGA 名词解释(FPGA WORD EXPLANATION )
- 电脑WiFi图标不见了?!怎么办......≡ (▔﹏▔) ≡
- 如何用excel求平均数?认准average()——搜索函数时千万别输mean,否则会得到geomean()
- axios 请求拦截器响应拦截器
- React从零开始搭建项目
- 手机APP连接华为OceanConnect平台下发指令控制硬件(附Android Studio 代码工程和APK)