关于《asp.net下web控件点评》中的一些看法
前不久看了园友的一篇文章《asp.net下web控件点评》,地址如下http://www.cnblogs.com/windinwing/archive/2009/08/17/1547803.html,主要是分析了一下web控件的优劣势。文章说的很在理,也引发了我的一些思考。这几天做一个网站,遇到一些里面所说的问题,大部分是和作者一样的烦恼,当然也有些不同的看法。
文中的第四点如下:
其实这一点是可以通过控制web控件都有的EnableViewState="False"的属性来控制是否产生ViewState。不过,首先,每个页面控件一多,这么做就显得麻烦了;其次,有时根据页面的逻辑,有些控件还不能将属性设为false,必须得保存控件的状态,尤其在使用AJAX技术的时候,否则页面一回调,内容就丢失了。
其次,文中也提到关于Image控件的一个BUG,如下:
以前其实不大常用Image控件,所以也没有特别留意这个问题,只是觉得微软应该不会这么失败。这几天做东西,刚好用到了Image控件,刚好也产生了同样的问题,通过设CSS样式表,始终无法把边框给弄出来。后来到页面上一看Image控件的属性,就明白了。
首先,BorderStyle属性默认是"NotSet",这样通过服务器一解析,肯定会生成style="border-width:0px;"的代码,所以无论怎么改样式表,边框也无法解析出来,因为样式优先级,最先优先的是写在控件HTML代码的style属性。
其次,设为BorderStyle="Solid"后,依然没有效果,因为BorderWidth属性仍然没有,解析后仍然会出现style="border-width:0px;"的代码,只需要将其设为BorderWidth="1px",此时边框就能解析出来了。然后再根据需要处理样式表就可以控制了。
别的就暂时没有了。
微软提供的这些自带控件,应该是考虑的比较全面的,有他们的优势,不过在实际应用中,需要我们花点脑筋来解决怎么样使用。但是缺点也是很明显的,主要就是固化的比较死,不好灵活运用。作为我个人来说,我还是比较喜欢用他们提供的自带控件的。
小小意见,和大家共勉。
文中的第四点如下:
其实这一点是可以通过控制web控件都有的EnableViewState="False"的属性来控制是否产生ViewState。不过,首先,每个页面控件一多,这么做就显得麻烦了;其次,有时根据页面的逻辑,有些控件还不能将属性设为false,必须得保存控件的状态,尤其在使用AJAX技术的时候,否则页面一回调,内容就丢失了。
其次,文中也提到关于Image控件的一个BUG,如下:
以前其实不大常用Image控件,所以也没有特别留意这个问题,只是觉得微软应该不会这么失败。这几天做东西,刚好用到了Image控件,刚好也产生了同样的问题,通过设CSS样式表,始终无法把边框给弄出来。后来到页面上一看Image控件的属性,就明白了。
首先,BorderStyle属性默认是"NotSet",这样通过服务器一解析,肯定会生成style="border-width:0px;"的代码,所以无论怎么改样式表,边框也无法解析出来,因为样式优先级,最先优先的是写在控件HTML代码的style属性。
其次,设为BorderStyle="Solid"后,依然没有效果,因为BorderWidth属性仍然没有,解析后仍然会出现style="border-width:0px;"的代码,只需要将其设为BorderWidth="1px",此时边框就能解析出来了。然后再根据需要处理样式表就可以控制了。
别的就暂时没有了。
微软提供的这些自带控件,应该是考虑的比较全面的,有他们的优势,不过在实际应用中,需要我们花点脑筋来解决怎么样使用。但是缺点也是很明显的,主要就是固化的比较死,不好灵活运用。作为我个人来说,我还是比较喜欢用他们提供的自带控件的。
小小意见,和大家共勉。
Difficulty of making decision depends on what to lose not gain