关于《asp.net下web控件点评》中的一些看法

前不久看了园友的一篇文章《asp.net下web控件点评》,地址如下http://www.cnblogs.com/windinwing/archive/2009/08/17/1547803.html,主要是分析了一下web控件的优劣势。文章说的很在理,也引发了我的一些思考。这几天做一个网站,遇到一些里面所说的问题,大部分是和作者一样的烦恼,当然也有些不同的看法。

文中的第四点如下:
Title4.对于新手还有长长的_VIEWSTATE

很多时候,我们编写前台代码的时候,只是需要简单的呈现出来,不需要长长的ID,不需要span,不需要_VIEWSTATE,仅仅需要几行干净的
HTML标签,但是根本没有选项或属性设置,要么全部给你,要么全不给 .虽然我们可以像asp,和asp.net那样来编写代码,但是既然提供了
总是要用的.

其实这一点是可以通过控制web控件都有的EnableViewState="False"的属性来控制是否产生ViewState。不过,首先,每个页面控件一多,这么做就显得麻烦了;其次,有时根据页面的逻辑,有些控件还不能将属性设为false,必须得保存控件的状态,尤其在使用AJAX技术的时候,否则页面一回调,内容就丢失了。

其次,文中也提到关于Image控件的一个BUG,如下:
Title前几天碰到一个奇怪的问题,想做一个效果, 鼠标移动到图片上,高亮显示边框,美工做好加入到代码中,死活没效果,找半天不知道怎么回

事,后来无意中发现所有的Image控件,自动加上了style="border-width:0px;", 好吧,后处台处 Image.Attributes.Remove("style");
还是有style="border-width:0px;"在加上Image.Attributes.Clear();仍然有style="border-width:0px;",决对是个脑残的设计,大概是为了

解决夹在a标记中的img标记默认的1px的border的问题吧,可是这就没办法用css来处理Image的border属性了.

以前其实不大常用Image控件,所以也没有特别留意这个问题,只是觉得微软应该不会这么失败。这几天做东西,刚好用到了Image控件,刚好也产生了同样的问题,通过设CSS样式表,始终无法把边框给弄出来。后来到页面上一看Image控件的属性,就明白了。
首先,BorderStyle属性默认是"NotSet",这样通过服务器一解析,肯定会生成style="border-width:0px;"的代码,所以无论怎么改样式表,边框也无法解析出来,因为样式优先级,最先优先的是写在控件HTML代码的style属性。
其次,设为BorderStyle="Solid"后,依然没有效果,因为BorderWidth属性仍然没有,解析后仍然会出现style="border-width:0px;"的代码,只需要将其设为BorderWidth="1px",此时边框就能解析出来了。然后再根据需要处理样式表就可以控制了。

别的就暂时没有了。
微软提供的这些自带控件,应该是考虑的比较全面的,有他们的优势,不过在实际应用中,需要我们花点脑筋来解决怎么样使用。但是缺点也是很明显的,主要就是固化的比较死,不好灵活运用。作为我个人来说,我还是比较喜欢用他们提供的自带控件的。
小小意见,和大家共勉。
posted @ 2009-08-18 23:21  芈老头  阅读(497)  评论(0编辑  收藏  举报