开始使用ASP.NET 2.0开始写B/S的应用了,所以开设此博客来记录一下自己所学到的知识、经验和学习过程,也记录一下自己的想法等等。

很多年前曾经接触过ASP 2.0,没怎么深入,很快就已经忘了。1年多前帮人移植了一个ASP.NET 1.0的小系统并增加了一点点功能,学习了一些TreeView的用法。还有就是今年初为一个系统增加一些功能,也是ASP.NET 1.0的。说实话,并没有从上面的系统中学到很多的东西,很多时候都是依葫芦画瓢,照着别人的方法弄就好了,虽然有很多的地方自己不明白,但也不深究,只要程序能正常运行就可以了。

前几天来了一个新项目,项目不大,但是从零开始,也就是没有任何的页面模版,没有任何的代码可以参考,从页面到应用架构统统有自己考虑设计。令人安慰的是使用ASP.NET 2.0和SQL Server 2005,这样我的一点点Windows Forms的开发经验有用处了。

到现在为止,已经完成了登录模块和一个主要模块,等待进一步的需求确认。我不明白为什么现在的客户都这样,不把需求全说了,让开发人员好好琢磨琢磨再写程序。他们非要先整一段,讨论讨论改改前一段,再整下一段。开发好累!

目前有点儿经验了,发现html中的table对页面控制也不容易。比如对齐,大多数时候让对齐就对齐,但有时候就是不对齐,也不清楚原因所在。css是个好东西,可惜自己没学过,从其他地方拷贝了一个,照着那个模样自己改改,凑合着用。

ASP.NET中的日历不好用,从因特网上找了一些来,大多都不好用,运行的时候都有错,或许是自己水平差,不会用。最后找了一个叫my97什么的,还可以。为了这个东西花了我一天的时间,真没劲。

用户登录写了一个自己的,没有用微软的,不知道微软的好不好用。

GridView开始用还可以,觉得挺简单,但是要增加一些功能就麻烦了,比如表头锁定,列锁定。网上有一些文章介绍怎么弄,有些太复杂,有些我没能测试通过。我的客户要求表头锁定,表中有2列是修改、删除的按钮,我把他们放在最前面,客户要求放在最后面,一开始我找不到方法,没做。现在想到一个方法,可能可以凑合用用。还有就是分页问题,当记录比较多时,速度成了一个关键。我自己的测试,当记录数超过100k时,使用DataTable,打开页面要50秒,使用ObjectDataSource要40秒。两种情况都无法接受,原因是数据库读取记录的时间太长。网络上有一些文章介绍用存储过程做,但是这样GridView的分页功能就不能用了,得自己弄分页导航了(我没有把握说一定不能,是我觉得不能,如果有人知道能的话,拜托告诉我)。

页面间需要传递状态,可以使用cookie, session, cache, application等。这和WinForm程序不同,一开始在程序流程上就困扰了我。看了一些文章,我自己选用了session和cache,但是cache在我机器上不稳定,总是掉,不知道原因,也没google到能解决我问题的办法。基于安全和兼容性问题,cookie最好不用了。

弹出提示框,确认对话框等会用到Java Script,一般我都把他们定义为公用函数。看来Java Script也要学习一下,并了解浏览器的对象模型。‘

页面布局上,一开始我用表格,但是有人建议我用frameset,于是我改为用frameset。之后,上网看了一些讨论,发现现在很多人都不建议用frameset。但是如果不用frameset,如果找到其他方法既能有使用frameset的优点,又能克服frameset的缺点呢?比如应用每个页面的抬头都有一幅图,如果做到不使用frameset让每次刷新页面时,该图都不重新下发,减少流量。

好了,先写到这儿。