有点asp.net开发经验的程序员都知道.
asp.net中的服务器端控件是多么的不符合实际应用.除了 <asp:Button> 和 <asp:Literal> 偶尔用之,其它的控件还有人在使用吗?
我用asp.net服务器端控件做了很多 ERP OA等数据库项目..总结出的一条经验就是
不要使用asp.ne服务器端t控件... ,不知道为什么微软工程师能搞出这么一套让人搞笑的控件模式...
为啥?
首先asp.net语言是为了开发软件产品的..
我们的软件产品分为两种
一种是网站,
一种就是B/S架构的信息管理软件.
第一种网站,我想做过的都应该知道.asp.net中的runat="server" 是要付出相当多的代价的.. 而实际用处却不多.
如果你的网站页面全部是用asp.net控件做出来的.那么很不幸的告诉你..效率太低了..
可维护性也很糟糕.甚至都不如php那种写法...
主要是asp.net控件想模仿C/S架构的那种控件使用效果.
结果是得不偿失的..
因为做网站根本就是单项性的..用户顶多就是用用超链接.看看文档.
当然asp.net也不能一竿子打死.还是有很多好用的地方的.比如说.用户自定义控件. 可悲的是自定义控件还有个FindControl( )的问题.. 难用至极..
用的我都想吐血..
第二种是B/S架构的信息管理软件
B/S架构的信息管理软件 要求的最大特点就是用户交互性.说白了就是用户体验.
如果你全部都用asp.net的服务器端控件来做..我想说的是最后你会被无尽的参数传来传去折磨致死..
用户也会被你无情的页面刷新而等的不耐烦..
因为这个原因我曾经甚至觉得B/S架构的软件简直就是垃圾..想走C/S的道路..
后来在实际的维护中发现确实是B/S架构的软件维护工作量小.
当然后期接触了EXTJS,Flex,RIA之后..又走回了B/S架构软件的道路..
采用了EXTJS和RIA之后我会asp.net控件彻底说再见了..
经常做的项目都是B/S架构的信息管理软件
新项目是网站..
于是我就开始思考了..
国外开源的项目多数都用castle来做.
他们的好处好像很多..也是完全抛弃了asp.net的那套机制..
于是我在想到底用不用castle.. 虽然学了有用.但是我还想说..
学习有风险,开学需谨慎...学习也是需要成本的...我曾经linux ,java,.net, c,破解, 啥的都搞都学.结果这些东西都是没用的..工作用不到,几个月就忘光了..只要你头脑灵活..用到再学都来得及.
思来想去还是采用自己能把握的东西才能保证项目的按时完成..
于是还是选择了老路子asp.net
但是我的项目里用的最多的就是自定义用户控件.
基本上很少使用服务器端控件..
但是自定义用户控件也是有不好的地方的比如上面说的FindControl问题.. 好纠结...还有该死的ID会自己变的问题,...
这些问题本来是没有的都是微软给我们制造的这么多麻烦..
后来发现还是的需要一个模版引擎..
网上找了找蛮多.但是都太复杂. 稳步稳定都难说...
无意中发现一篇文章讲 HttpContext.Current.Server.Execute()方法的.可以做模板引擎..
仔细研究一番,,还真是我想要的效果...
特此推荐给大家..
TextWriter write = new StringWriter();
HttpContext.Current.Server.Execute(TemplatePath,write, true);
return write.ToString();