项目需求:
一:能留言
二:显示留言
三:管理留言
四:附带一栏目管理
五: 管理员管理
六:栏目管理
....
等
留言版的其他功能正如读者所知,此处不再列举,需求暂时列举到这里。
项目分析:
首先,需要说的是,
ASP.NET是一个比较高级的解决方案,根据我的经验,至少比php,asp高级,这是微软花了起来开发的一个框架(.NET)的一部分,在我看了,它在很大的面向的是用户和程序员(美工的地位的在微软看来他们自己会解决,即使事实不是这样,如果美工在微软的产品找不到自信就去玩
PHP,这算乱谈),.NET的框架为开发中小企业网站提供能良好的解决问题的方案,完全的面向对象和N层开发在
ASP.NET能得到一定的体现,细细说了,太长,此处省去.这次我采用
4层编程演示一下,有兴趣的读者自己体会,先画了小图说明一下何谓我说的“
四层”。

这里,我把整体的业务层也分为2层理解和处理的。
一、
实现分析:
用户留言是初步实现用户交流管理的项目,用户能浏览留言和发表留言,管理员能管理留言,沿着这个主线,我们只分析过程,不设计程序和数据库,可以得到一个 用户-->提交->反馈结果的流程的。
二、
技术分析:
我先把这里与遇到的(肯定会)一些问题列出来,当然,没做过就不知道是不是有,但好的策划都能预料到的,事实上,没有多少人能提前遇到多少问题:
·如何理解N层设计
·如何设计编程配置类
·如何自定义控件
·如何编译代码
·如何使用应用程序状态
·如何使用模板
·如何使用正则类
·如何生成验证码
·如何提高
ASP.NET的性能...
当然,在项目分析的时候说这些,有些违背OOP的精神的味道,但列出来希望读者明白我做了什么,那些对您有用,原因很简单,我不会几千字教会您怎么使用,掌握OOP,但您只需花很少的时间能掌握到实实在在的技术。关于留言版,读者可能太熟悉了,想必您用asp/jsp/php等都开发过,其中的思想大体相同,这里不再做问题分析。
记住,用ASP.NET绝对会是前所未有的感觉。
下面是具体的程序开发。
1、框架规划
首先采用div布局设置,页面框架也就是3部分组成,顶部的一个<p>标签说明和一个<li>的项目列表,主要是导航用的;第二部分是主题部分;第三部分是下面的说明。请看截图:

上下的部分我做成用户控件处理,中间的部分随着url的不同加载。
2、文件规划
除了首页需要展示留言的信息以为,需要一个页面(post.aspx)发表留言和admin/index.asp处理后台的数据(此处只说栏目的数据和留言的数据管理)
+----------guestbook(虚拟目录请先在MM
C建立)
----+bin(必须)
----+style
------------all.css
----+images
----+inc
------------imgcheck.aspx(图片验证码)
----+admin
----+js(javascript文件)
----+ascx(自定义控件)
----+vb(vb文件)
----+data(数据库)
3、程序规划
数据库:access
测试平台:2k+.NET1.1.423
程序就是采用上面说的4层框架的思想去写,我这里使用的是(
VB.NET)。
4、数据库结构
data目录下面的db.mdb文件,其中涉及到三个表:
szd_book(留言):

szd_sort(栏目)

szd_user(用户登陆)

先说明一下我使用的命名空间的想法,我是把前后台共同的类的命名就空间命名成了
CjjerBase ,只是前台的
CJJERGUESTBOOK,后台的是 BookAdminSpace ,基本达到表意,使用不同的命名空间还是考虑到.net加载信息的优化性,不再赘言。
设计与数据库交互的基类: conn类
代码拷贝框
[
Ctrl+A 全部选择 然后拷贝]
设计类的时候,一般的说来,能使用现成的最好,重用思想 ,没有的话继承最好,实在没有的话自己设计,一般option explicit , option strict 都是打开的,利于程序有话,然后编译,设计了此类以后再任何页面请不要再跨此类使用数据库,这是出于OO思想(当换使用数据库的时候,只需要修改conn类即可)。
类设计的时候抛出异常的,对于非产品级别的(调试的,其实是永远的,我认为有2个版本,用户的和程序员的,这里指后者),直接调用
tryconn.open()catch objerror as ExceptionHttpContext.Current.Response.Write("<font color =red>Conn类异常:</font>" & objerror.Message & ":" & objerror.source)Exit subEnd try
这样的形式就可以了。
我在这里还使用了一个验证码的一个基类,就是那个验证码,我也单独设计了一个类:
代码拷贝框
[
Ctrl+A 全部选择 然后拷贝]
坦白的说,确实不怎么样的类,此类只有一个共享方法:
Img::CheckImg (optional imgcheckid as string = "imgcheck", _optional i
[1][2][3]下一页