NULL

快乐的活着...【湘西,蓝蓝的天,清清的水...】

  博客园 :: 首页 :: 新随笔 ::  :: 订阅 订阅 :: 管理 ::
  41 随笔 :: 1 文章 :: 1228 评论 :: 43 引用
引子
    
    样式,似乎是一个恒久的话题,要了解样式的来龙去脉,我们得基本熟悉样式的Render呈现过程,还得熟悉视图状态的生命周期和Webcontrol,也可以说成Control特有的状态维护方式...
    在这个摸索的过程中,我碰到很多问题,也很迷惑,我会先留下”痕迹“,待以后灵感来了,说不定问题就不是问题了!当然,一切需要使用样式的控件”一般“都是继承自System.Web.UI.WebControls.WebControl,我说的是“一般”,如果你有时间,也可以从Control做起,然后一一维护样式的状态,呵呵!

有点迷惑的地方

看看WebControl状态维护,有点意思,我们来看她的截图,呵呵!
没有实现任何状态维护接口


再看看她的LoadViewState和SaveViewState方法

看到了吗?override修饰,到底重写谁的方法?WebControl不是没有实现IStateManager接口吗?何来重写?
想了N久,突然,发现自己实在笨得不行,儿子的东西不是老子给的嘛?

赶紧去看看Control

MD原来Control也没有实现IStateManager接口,而且LoadViewState方法修饰为virtual,也就是说,这些方法是Control类的,并非IStateManager接口的!

再找找吧,突然,我想起我经常用到的ViewState这个属性,对,就是她,Control以及WebControl都是委托给类型为StateBag的ViewState属性,书上是这么说的,就叫“委托”,呵呵!


先停下来想想,既然StateBag实现了IStateManager接口,我们当然没必要让Control重复做工,让ViewState去管得了!

进入正题(样式的状态)

位于System.Web.UI.WebControls空间下的Style,是所有样式类型的父类,Style实现了IStateManager接口,有点类似StateBag做的事情,呵呵!
WebControl有个类型为Style的属性ControlStyle,类似Control类型里的ViewState属性,WebControl的所有样式的状态维护都又她管,记得对比一下ViewState,相似得惊人!



一点小结

通过剖析,我们发现WebControl的样式状态维护(也可以说是复杂属性)和普通属性状态维护,是分别维护的,也就是普通属性状态维护又ViewState负责,而样式状态是又ControlStyle属性负责维护!

正式发布验证码控件(带独立样式文件的)
4位验证码

8位

带背景图的


show一下她的属性窗口


样式的亮点,就不多说了http://www.cnblogs.com/wmj/archive/2008/06/11/1217191.html

总结
    由于水平有限,难免有不妥当之处,还望大家多多提出宝贵的意见,再加上本人有点狂,所以请大家不要太在意!复合控件的样式的细节在后面的文章会讲到...
 
验证码控件demo下载

参考
    道不远人,google

注意,控件名.Text一定要放在Page.Load方法中,切记

posted on 2008-06-19 14:45 王孟军! 阅读(2660) 评论(37)  编辑 收藏 所属分类: asp.net Controls

评论

#1楼  2008-06-19 15:00 birdshome      
顶光头控件
  回复  引用  查看    

#2楼  2008-06-19 15:02 瑞克梅塔      
支持
  回复  引用  查看    

#3楼  2008-06-19 15:05 狼Robot      
学习.
  回复  引用  查看    

#4楼  2008-06-19 15:08 guest [未注册用户]
进来看光头
  回复  引用    

#5楼 [楼主] 2008-06-19 15:10 王孟军!      
thanks
大家应该多讨论技术问题,又不是女人,讨论也没用^-^
  回复  引用  查看    

#6楼  2008-06-19 15:11 石牌村夫      
支持
  回复  引用  查看    

#7楼  2008-06-19 15:14 侯垒      
支持一下.
  回复  引用  查看    

#8楼  2008-06-19 15:14 szbaby1221 [未注册用户]
寫的真不錯!

我看到人家寫這種文章我就嫉妒!
  回复  引用    

#9楼  2008-06-19 15:37 jeff377      
你的验证控件是使用底图上加文字,这样安全性是不高的,机器人程序很容易就破解了,建议比较好的方式是含文字整个都是图形,这样用程序比较难破解。
当然也有人使用影像识别的技术可以自动辨识,不过这个难度比识别码内含在 HTML 码中难多了。

  回复  引用  查看    

#10楼  2008-06-19 15:39 朝晖的.net      
@王孟军!

楼主,如何实现类似droplist那种带有items属性的控件。

我现在不知道这个items怎么进行保持,代码里items。add()后页面内容出来了,但是空间的items集合仍为null。

  回复  引用  查看    

#11楼 [楼主] 2008-06-19 15:47 王孟军!      
@朝晖的.net

控件持久化的时候,要把控件的属性持久化为子控件,当然还有些细节问题要处理...
  回复  引用  查看    

#12楼  2008-06-19 16:01 shoucao [未注册用户]
兄弟的头型不错
  回复  引用    

#13楼  2008-06-19 16:19 啊 [未注册用户]
--引用--------------------------------------------------
shoucao: 兄弟的头型不错
--------------------------------------------------------

  回复  引用    

#14楼  2008-06-19 16:28 hdl253      
支持一个
  回复  引用  查看    

#15楼  2008-06-19 16:40 ss110 [未注册用户]
头太酷
  回复  引用    

#16楼  2008-06-19 16:46 qiangzi      
严格来说,这个验证码控件没有实际意义,验证码可以复制,在WEB页面的HTML代码上也可以找到,这样的验证码有什么意义呢?

9楼所说的方法才是符合要求的.
  回复  引用  查看    

#17楼 [楼主] 2008-06-19 16:49 王孟军!      
@qiangzi

谁说可以复制?

如果觉得不安全,可以把viewstate加密一下

  回复  引用  查看    

#18楼  2008-06-19 17:04 麦舒      
--引用--------------------------------------------------
王孟军!: @qiangzi

谁说可以复制?

如果觉得不安全,可以把viewstate加密一下

--------------------------------------------------------
加密也没有用。可以把加密后的内容发送回服务端。
  回复  引用  查看    

#19楼 [楼主] 2008-06-19 17:09 王孟军!      
@麦舒

------------------------------------------
加密也没有用。可以把加密后的内容发送回服务端。
------------------------------------------

如果能取到服务器的数据,那就是天大的怪事
想请教老兄一问题,你在客户端怎样获取后台的数据?请指教
  回复  引用  查看    

#20楼  2008-06-19 17:49 jeff377      
这个跟 ViewState 加密无关,你从 IE 检视 HTML 码,就有辨法找到那个图形验证码的值,这样只要用程序去控制操作 IE 就能破解了。
  回复  引用  查看    

#21楼 [楼主] 2008-06-19 17:58 王孟军!      
@jeff377

-------------------------
你从 IE 检视 HTML 码
-------------------------
破解了,告诉我,我期待

  回复  引用  查看    

居然把验证码放在html中.......
  回复  引用    

#23楼  2008-06-19 20:06 KeithDan      
--引用--------------------------------------------------
daydayupayup: 居然把验证码放在html中.......
--------------------------------------------------------
很明显这只是一个实验阶段的验证码,无任何实用价值~~
反倒是其中的style设置给新手借鉴.



  回复  引用  查看    

#24楼  2008-06-19 20:15 Learning [未注册用户]
好像是可以复制哦
  回复  引用    

#25楼  2008-06-19 22:16 胡一刀      
@王孟军!
验证码这么写,无任何安全可言,加viewstate也是假的
  回复  引用  查看    

#26楼 [楼主] 2008-06-20 08:35 王孟军!      
@胡一刀
@KeithDan
我没见过,可以破解加密的viewstate隐藏字段的同志

还有,验证码难道不需要呈现出来吗?

  回复  引用  查看    

@王孟军!
你还是先多看看codeproject吧
验证码当然要呈现 但是要以图片形式呈现 不能为文字
即便是单色图片都有可能被获取

要不你做一个系统 使用你这个验证码来验证输入
我给你填充100000条记录 试一下?
  回复  引用    

#28楼 [楼主] 2008-06-20 08:50 王孟军!      
@daydayupayup
明白,谢谢
你的意思无任何文字,就算遍历所有HTML,也没有用,用图片代替?
也就是在后台生成验证码,然后把验证码做成图片形式?
thanks
请留MSN


  回复  引用  查看    

#29楼  2008-06-20 09:24 Anders Cui      
顶一下!
  回复  引用  查看    

#30楼  2008-06-20 10:28 pwqzc [未注册用户]
右键光头!
  回复  引用    

#31楼  2008-06-20 10:30 jeff377      
@daydayupayup
纯图形的好处是不容易使用机器识别,那是属于影像处理的一问学问,不过颜色多不见得不好识别,有时反而是人眼不好识别而机器易识别,因为颜色多的图形验证码,有时只要有二值化就很容易撷取出文字部分,最好的图形验证码是人眼易识别而机器难识别。
像Yahoo登入的纯黑白验证码就写的非常好(噪声简单,人眼又易识别),可是要用机器识别难度就非常高,为研究我曾使用类神经网络(人工神经网络)尝试去识别它的图形,成功率相当低。

  回复  引用  查看    

#32楼 [楼主] 2008-06-20 11:19 王孟军!      
@jeff377
涉及到 影像处理,还是有一定难度的
有时间多指点指点小弟

  回复  引用  查看    

#33楼  2008-06-20 20:43 丹空竹      
http://www.cnblogs.com/iRed/archive/2008/06/11/1217544.html
每个字符旋转随机角度的可视验证码
这易破解吗, 请大家多指教, 谢谢.
  回复  引用  查看    

#34楼  2008-06-21 00:42 jeff377      
@丹空竹
我研究所的论文就是在做类神经网络处理文字辨识,以你的例子而言,旋转随意角度对辨识来说并不会有太大影响,只要抓字的重心,360度旋转抓取特微值,还是可以辨识的出来。
通常文字辨识的有一个重要的动作,就是要把个别文字分割,你只要把文字弄的难分割就有不错的安全性。
  回复  引用  查看    

#35楼  2008-06-21 14:02 丹空竹      
@jeff377
谢谢英雄, 竹子会继续完善那验证码.

不知道楼主的验证码是怎么实现, 听楼上数位网友的话, 貌似楼主的验证码不是以图象形式输出的?!?! 我的电脑坏了, 暂时没法看到代码和效果.
  回复  引用  查看    

#36楼 [楼主] 2008-06-21 14:10 王孟军!      
@丹空竹
抱歉,现在还不是用生成图片的形式生成验证代码的,有时间,我会完善的,呵呵
  回复  引用  查看    

#37楼  2008-06-21 15:31 丹空竹      
--引用--------------------------------------------------
王孟军!: @丹空竹
抱歉,现在还不是用生成图片的形式生成验证代码的,有时间,我会完善的,呵呵
--------------------------------------------------------
汗, 验证码你不是以图象输出难道用文本输出? 如果是的话, 那这验证码还有什么实际应用意义?! 过滤一下生成的HTML不就被识别了, 连什么OCR, 降噪, 对比度....., 还有楼上说的什么神经学都不用.....
  回复  引用  查看    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-06-19 16:33 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: