摘要
随着网络技术的迅猛发展, 当代企业纷纷建立自己的网站,借助于互联网扩大自己的影响、推广自己的产品,同时通过互联网快速的信息传递加速自身的发展。
本论文设计实现了一个电子商务网站前台框架搭建和后台数据库管理系统,意在通过设计一个具有强大的数据管理功能的系统来管理前台页面中不断更新的数据,方便网站管理员日后对网站的维护和数据更新。本论文所提出的
是采用现在比较流行的.net技术和软件Microsoft Visual Studio 10.0并配合网页三剑客(dreamweaver、photoshop、flash)等制作工具来设计和建设一个企业网站前台框架搭建和后台数据库管理系统。
关键词:减振器电子商务网站、ASP.NET技术、SQL server数据库
目录
第一章 绪论 1
1.1 设计背景 1
1.2 构架系统 1
第二章 可行性分析 4
2.1技术可行性 4
2.2社会可行性 4
第三章 动态网站的开发技术及其实现 6
3.1动态网站的关键开发技术 6
3.2动态网站的实现 7
3.2.1网站建设的市场背景 7
3.2.2网站实现的功能 8
3.2.3网站内容风格设计 8
第四章 动态网站的总体模块设计 8
4.1前台功能模块总体设计 8
4.2后台功能模块总体设计 9
4.3数据库模块总体设计 10
第五章 三层架构代码实现及页面展示 10
5.1数据层 10
5.2数据层 13
5.2.1数据访问层 13
5.2.2业务逻辑层 19
5.3表示层 20
5.3.1首页展示 21
5.4三层架构的优势展示 27
第六章 各模块功能实现及代码分析 39
6.1分页功能的实现 39
6.2页面传参实现框架功能 42
6.3搜索功能实现 45
结论 48
致谢 49
参考文献 50
第一章 绪论
1.1 设计背景
在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。Internet上发布信息主要是通过网站来实现的,获取信息也是要在Internet“海洋”中按照一定的检索方式将所需要的信息从网站上下载下来。因此网站建设在Internet应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。
网络在现代生活中日益盛行,越来越多的人对此也极为痴迷,随着网络技术的迅猛发展, 当代企业纷纷建立自己的网站,借助于互联网扩大自己的影响、推广自己的产品,同时通过互联网快速的信息传递加速自身的发展。因此我选择将公司网站的设计以及后台的管理作为我的项目——减震器网站设计与制作。
1.2 构架系统
>> N层架构
每一层都可以在仅仅更改很少量的代码后,就能放到物理上不同的服务器上使用,因此结构灵活而且性能更佳。此外,每层做些什么其它层是完全看不到的,因此更改、更新某层,都不再需要重新编译或者更改全部的层了。这是个很强大的功能。例如,如果把数据访问代码与业务逻辑层分离,当数据库服务器更改后,你只需要更改数据访问的代码,因为业务逻辑层是不变的,因此不需要更改或者重新编译业务逻辑层。
一个N层[3]的应用程序通常有三层:表现层、业务层和数据层。下面让我们看看每层都做些什么。
● 表现层(Presentation Layer)
表现层用于用户接口的展示,以及用业务层的类和对象来“驱动”这些接口。
在ASP.NET中,该层包括aspx页面、用户控制、服务器控制以及某些与安全相关的类和对象。
● 业务层(Business Tier)
业务层用于访问数据层,从数据层取数据、修改数据以及删除数据,并将结果返回给表现层。
在ASP.NET中,该层包括使用SqlClient或OleDb从SQL Server或Access数据库取数据、更新数据及删除数据,并把取得的数据放到DataReader或DataSet中返回给表现层。返回的数据也许只有一个整型数字,比如一个表的行记录数目,但这也要用数据层的数据进行计算。
● BLL和DAL
通常该层被划分成两个子层:业务逻辑层(Business Logic Layer,BLL)和数据访问层(Data Access Layers,DAL)。业务逻辑层在数据访问层之上,也就是说BLL调用DAL的类和对象。DAL访问数据并将其转给BLL。
在ASP.NET中,该层可以用SqlClient或OleDb从SQL Server或Access数据库取数据,把数据通过DataSet 或DataReader的形式给BLL,BLL处理数据给表现层。有的时候,例如直接把DataSet 或DataReader送给表现层的时候,BLL是一个透明层。
● 数据层(Data Tier)
数据层是数据库或者数据源。在.NET中,通常它是一个SQL Server或Access数据库,但不仅限于此两种形式,它还可能是Oracle,mySQL,甚至是XML。
● 逻辑层VS(分布式)物理层
人们容易将这两个概念搞混。我们说逻辑层是把层按类的集合来划分,而这些层都在同一台个服务器上。(分布式)物理层是指类的集合在不同的服务器上,用附加的代码来处理层间的通信,比如remoting和web服务。
>>ASP.NET的优势:
● 增强的性能。ASP.NET 是在服务器上运行的编译好的公共语言运行库代码。与被解释的前辈不同,ASP.NET 可利用早期绑定、实时编译、本机优化和盒外缓存服务。这相当于在编写代码行之前便显著提高了性能。
● 世界级的工具支持。ASP.NET 框架补充了 Visual Studio 集成开发环
境中的大量工具箱和设计器。WYSIWYG 编辑、拖放服务器控件和自动部署只是这个强大的工具所提供功能中的少数几种。
● 威力和灵活性。由于 ASP.NET 基于公共语言运行库,因此 Web 应用程序开发人员可以利用整个平台的威力和灵活性。.NET 框架类库、消息处理和数据访问解决方案都可从 Web 无缝访问。ASP.NET 也与语言无关,所以可以选择最适合应用程序的语言,或跨多种语言分割应用程序。另外,公共语言运行库的交互性保证在迁移到 ASP.NET 时保留基于 COM 的开发中的现有投资。
● 简易性。ASP.NET 使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署和站点配置。例如,ASP.NET 页框架使您可以生成将应用程序逻辑与表示代码清楚分开的用户界面,和在类似 Visual Basic 的简单窗体处理模型中处理事件。另外,公共语言运行库利用托管代码服务(如自动引用计数和垃圾回收)简化了开发。
● 可管理性。ASP.NET 采用基于文本的分层配置系统,简化了将设置应用于服务器环境和 Web 应用程序。由于配置信息是以纯文本形式存储的,因此可以在没有本地管理工具帮助的情况下应用新设置。此"零本地管理"哲学也扩展到了 ASP.NET 框架应用程序的部署。只需将必要的文件复制到服务器,即可将 ASP.NET 框架应用程序部署到服务器。不需要重新启动服务器,即使是在部署或替换运行的编译代码时。
● 可缩放性和可用性。ASP.NET 在设计时考虑了可缩放性[4],增加了专门用于在聚集环境和多处理器环境中提高性能的功能。另外,进程受到 ASP.NET 运行库的密切监视和管理,以便当进程行为不正常(泄漏、死锁)时,可就地创建新进程,以帮助保持应用程序始终可用于处理请求。
● 自定义性和扩展性。ASP.NET 随附了一个设计周到的结构,它使开发人员可以在适当的级别"插入"代码。实际上,可以用自己编写的自定义组件扩展或替换 ASP.NET 运行库的任何子组件。实现自定义身份验证或状态服务一直没有变得更容易。
● 安全性。借助内置的 Windows 身份验证和基于每个应用程序的配置,可以保证应用程序是安全的。
第二章 可行性分析
2.1技术可行性
硬件、软件要求不高,目前市场上的一般计算机硬件资源均能满足系统开发要求。其中运用的主要软件有Dreamweaver,photoshop,SQL server等,数据库采用sql server2000。采用ASP.NET技术,该技术功能强大,扩展性强,macromedia公司提供大量的第三方控件,并结合vbscript,javascript以及sql等脚本语言,以上技术足以完成本系统的开发和设计。
2.2社会可行性
在国外,特别是在美国,实施企业战略不只是空谈,它已经被列入了许多大企业的日程表中。与国外的热闹场面相比,国内了解企业概念的企业十分少,而计划建立企业的企业就更加微乎其微。但是应该看到,互联网在国内的发展速度相当迅速,企业网站作为一种新的形象传播途径,同传统媒介相比,对大众更具有亲和力与吸引力,可以帮助企业与消费者建立更亲密、更稳固的联系。
企业网站有很多作用:
一、拥有企业自己的域名,建立企业自己的网站,树立企业在科技信息时代的完美形象。作为第四媒体的互联网,其特点就是可以跨越时空,正常情况下, 网站无时无刻 不在工作通过企业的网站,用户可以跨越时空了解企业,利用多媒体技术,企业可以 向用户展示产品、技术、经营理念、企业文化、企业形象,树立现代企业形象,增值 企业无形资产。
二、宣传企业,创造销售机会据调查,有超过30%的人是通过上网查询企业的电话和地址的,这一比例和通过114查询的比例相接近,可见企业网站已成为许多人首次接触企业、了解相关信息的选择。
三、加强客户沟通宣传企业产品企业可以通过网站建立与客户沟通的便捷渠道,全面展示企业的所有产品。网络科技足以令您的产品与品牌形象更加立体地呈现在用户面前,就算企业仅仅把网站当成电子宣传册来使用,也较传统的宣传模式更加的多姿多彩、更加地易于发布与传播、更加的经济与环保。
四、丰富营销手段,扩大产品销售渠道企业网站可以满足一部分客户网上查询与采购的需要,抓住网络商机。企业通过网站可以开展电子营销。首先,电子营销作为传统营销的补充;其次, 电子营销可以拓展新的空间,增加销售渠道,接触更大的消费群体,获得更多的新顾 客,扩大市场;再次,电子营销可以减少环节,减少人员,节约费用,降低成本,有利于提高营销效率。
五、有利于了解顾客的意见,掌握顾客的需求在不干扰顾客正常工作和生活的条件下,企业通过网站上的调查表、留言薄、定 制服务以及E-MAIL可以倾听顾客的意见,了解顾客的心声,加强企业与顾客间的联系 建立良好的顾客关系。
六、有利于改善服务,提高企业服务质量利用网站,通过电子沟通方式,企业开展的在线服务是传统的沟通方式(如,邮 件、电话、传真等)所无比拟的,在线服务能够更加及时准确地掌握用户的需求,通过网站的交互式服务使得被动提供和主动获得统一起来,从而实现售前、售中、售后的全过程和全方位的服务。
七、 互联网的特点在于突破地域限制,一个网站能同时为您服务于世界各地的拥护;同时,网络无休息,一年365天、一天24小时,您的网站永远忠实地服务于您的所有客户。
第三章 动态网站的开发技术及其实现
3.1动态网站的关键开发技术
ASP.NET 是建立在公共语言运行库上的编程框架,可用于在服务器上生成功能强大的 Web 应用程序。与以前的 Web 开发模型相比,ASP.NET 提供了数个重要的优点[4]:
● 增强的性能[3]。ASP.NET 是在服务器上运行的编译好的公共语言运行库代码。与被解释的前辈不同,ASP.NET 可利用早期绑定、实时编译、本机优化和盒外缓存服务。这相当于在编写代码行之前便显著提高了性能。
● 世界级的工具支持。ASP.NET 框架补充了 Visual Studio10.0 集成开发环境中的大量工具箱和设计器。WYSIWYG 编辑、拖放服务器控件和自动部署只是这个强大的工具所提供功能中的少数几种。
● 威力和灵活性。由于 ASP.NET 基于公共语言运行库,因此 Web 应用程序开发人员可以利用整个平台的威力和灵活性。.NET 框架类库、消息处理和数据访问解决方案都可从 Web 无缝访问。ASP.NET 也与语言无关,所以可以选择最适合应用程序的语言,或跨多种语言分割应用程序。另外,公共语言运行库的交互性保证在迁移到 ASP.NET 时保留基于 COM 的开发中的现有投资。
● 简易性。ASP.NET 使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署和站点配置。例如,ASP.NET 页框架使您可以生成将应用程序逻辑与表示代码清楚分开的用户界面,和在类似 Visual Basic 的简单窗体处理模型中处理事件。另外,公共语言运行库利用托管代码服务(如自动引用计数和垃圾回收)简化了开发。
● 可管理性。ASP.NET 采用基于文本的分层配置系统,简化了将设置应用于服务器环境和 Web 应用程序。由于配置信息是以纯文本形式存储的,因此可以在没有本地管理工具帮助的情况下应用新设置。此“零本地管理”哲学也扩展到了 ASP.NET 框架应用程序的部署[5]。只需将必要的文件复制到服务器,即可将 ASP.NET 框架应用程序部署到服务器。不需要重新启动服务器,即使是在部署或替换运行的编译代码时。
● 可缩放性和可用性。ASP.NET 在设计时考虑了可缩放性,增加了专门用于在聚集环境和多处理器环境中提高性能的功能。另外,进程受到 ASP.NET 运行库的密切监视和管理,以便当进程行为不正常(泄漏、死锁)时,可就地创建新进程,以帮助保持应用程序始终可用于处理请求。
● 自定义性和扩展性。ASP.NET 随附了一个设计周到的结构,它使开发人员可以在适当的级别“插入”代码。实际上,可以用自己编写的自定义组件扩展或替换 ASP.NET 运行库的任何子组件。实现自定义身份验证或状态服务一直没有变得更容易。
● 安全性。借助内置的 Windows 身份验证和基于每个应用程序的配置,可以保证应用程序是安全的。
3.2动态网站的实现
3.2.1网站建设的市场背景
互联网的兴起及其在全球范围内的普遍应用,加快了全球信息化的步伐,同时,又使传统企业面临着新的挑战和机遇。传统企业广泛实施电子商务转型策略,是互联网经济时代新型企业的发展方向。
何将互联网技术应用于企业日常宣传、运作、管理中,如何在电子商务应用领域开拓市场,如何利用Internet给企业带来商机、拓展企业的规模和效益,如何加强内部管理等等…则更是企业在互联网经济浪潮中急需考虑的问题。
3.2.2网站实现的功能
通过实施一系列的电子化建设计划,该动态网站将实现:
● 整合企业的业务应用
● 相关信息的动态发布:企业信息、产品信息、招聘信息等
● 建立一个强大的对外宣传口径
● 方便管理员对整个网站监控和维护
3.2.3网站内容风格设计
● 总体印象:立足于企业服务宗旨,延伸至高新行业领域,主题突出,内容精干,形式简洁
● 版式布局:栏目集中[1],分栏目检索明确,导航标志清晰
● 色彩运用:色调总体呈畅快、简洁、专业的特征[2]:(根据企业实际需要决定)
● 图片运用:配合文字及色块,以生动的形象图片表达知名专业公司的实力和创造力
● 在功能上:网站内容从各方面尽量满足客户和有需求的业内人士的合理要求
第四章 动态网站的总体模块设计
由于中小型企业网站的目标重点在于展示企业的信息和商品的在线销售。本章重点介绍前台功能模块总体设计、后台功能模块总体设计和数据库模块的总体设计。
4.1前台功能模块总体设计
前台功能模块主要包括:首页、公司产品、公司简介、减震选型、工程实例、售后服务、联系我们、人才招聘。总体设计展示如图4.1。
人才招聘
图4.1 前台功能模块总体设计
4.2后台功能模块总体设计
后台功能模块包括:管理员的权限管理、产品管理、产品类型管理、公司信息管理、工程实例管理、招聘信息管理、招聘部门管理、留言信息管理的添加、修改、查看等。总体设计展示如图4.2。
首页登录
图4.2后台功能模块总体设计
4.3数据库模块总体设计
数据库[7]模块的总体设计展示如图4.2。
图4.3数据库功能模块总体设计
第五章 三层架构代码实现及页面展示
本网站的后台实现应用了三层架构:数据层、业务层(BLL和DAL)以及表现层。下面我们分别介绍。
5.1数据层
该网站使用的数据库是sql server2000[7],在数据层将每个数据表封装起来。下面以商品数据表为例,进行代码分析。在Visual Studio10.0中可以看到数据层的展示,如图5.1。
ProductModels.cs页面的源代码:
//命名空间
using System;
数据层
图5.1数据层的展示
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TanganModels
{ [Serializable][5]
public class ProductModels
{//对应数据库定义私有变量
private int id;
private string proname= String.Empty;
private string projieshao = String.Empty;
private string proimg = String.Empty;
private DateTime prodate;
private int gid;
private int leixing;
private string yongliao = String.Empty;
private string jiegou = String.Empty;
private string jiegoutxt = string.Empty;
private string jishu = String.Empty;
private string cname = String.Empty;
public ProductModels(){ }//定义构造方法
//对变量进行封装
public int Id
{ get { return this.id; } set { this.id = value; } }
public string ProName
{ get { return this.proname; } set { this.proname = value; } } public string Projieshao
{ get { return this.projieshao; } set { this.projieshao = value; }}
public string Proimg
{ get { return this.proimg; } set { this.proimg = value; }}
public DateTime Prodate
{ get { return this.prodate; } set { this.prodate = value; }}
public int Leixing
{ get { return this.leixing; } set { this.leixing = value; } }
public int Gid
{ get { return this.gid; } set { this.gid = value; }}
public string Yongliao
{ get { return this.yongliao; } set { this.yongliao = value; }}
public string Jiegou
{ get { return this.jiegou; } set { this.jiegou = value; }}
public string Jiegoutext
{ get { return this.jiegoutxt; } set { this.jiegoutxt = value; }}
public string Jishu
{ get { return this.jishu; } set { this.jishu = value; }}
public string Cname
{ get { return this.cname; } set { this.cname = value; }}
5.2数据层
业务层用于访问数据层,从数据层取数据、修改数据以及删除数据,并将结果返回给表现层。下面以商品数据表为例,进行代码分析。
5.2.1数据访问层
数据访问层用于链接数据库和各种方法的
写。在Visual Studio10.0中可以看到数据访问层和业务逻辑层的展示,如图5.2。
业务逻辑层(BLL)
图5.2数据访问层和业务逻辑层的展示
ProductDAL.cs页面代码
//导入命名空间
using System.Data;
System.Data.SqlClient;
using TanganModels;
namespace TanganDAL
{ public static partial class ProductDAL
{
//商品添加
public static ProductModels Addproduct(ProductModels pro)
{ string sql ="INSERT product(proname,projieshao,proimg,
prodate,leixing,gid,yongliao,jiegou,jiegoutext,jishu)" +"VALUES(@proname,@projieshao,@proimg,@prodate,@leixing,@gid,@yongliao,@jiegou,@jiegoutext,@jishu)";
sql += " SELECT @@IDENTITY";[7]
try
{ SqlParameter[] para=new SqlParameter[]
{ new SqlParameter("@proname",pro.ProName),
new SqlParameter("@projieshao",pro.Projieshao),
new SqlParameter("@proimg",pro.Proimg),
new SqlParameter("@prodate",pro.Prodate),
new SqlParameter("@leixing",pro.Leixing),
new SqlParameter("@gid",pro.Gid),
new SqlParameter("@yongliao",pro.Yongliao),
new SqlParameter("@jiegou",pro.Jiegou),
new SqlParameter("@jiegoutext",pro.Jiegoutext),
new SqlParameter("@jishu",pro.Jishu), };
int proId = DBHelper.GetScalar(sql, para);
return GetProById(proId); }
catch (Exception e)
{ Console.WriteLine(e.Message);
throw e; } }
//按id号删除记录
public void Delproduct(int id)
{ string sql = "DELETE product WHERE id=@id";
try
{ SqlParameter[] para = new SqlParameter[]
{ new SqlParameter("@id", id)};
DBHelper.ExecuteCommand(sql, para);
}
catch (Exception e)
{ Console.WriteLine(e.Message);
throw e;
}}
//按类型删除记录
public static void DelProCId(int leixing)
{ string sql = "DELETE Product WHERE leixing=@leixing";
try
{ SqlParameter[] para = new SqlParameter[]
{ new SqlParameter("@leixing", leixing) };
DBHelper.ExecuteCommand(sql, para);
}
catch (Exception e)
{ Console.WriteLine(e.Message);
throw e;
} }
//更从商品记录
public static void UpdatePro(ProductModels pro)
{ string sql = "UPDATE product SET" +
" proname=@proname," +
" projieshao=@projieshao," +
" proimg=@proimg," +
" prodate=@prodate," +
" leixing=@leixing," +
" gid=@gid," +
" yongliao=@yongliao," +
" jiegou=@jiegou," +
" jiegoutext=@jiegoutext," +
" jishu=@jishu " +
" WHERE id=@id";
try
{ SqlParameter[] para=new SqlParameter[][6]
{ new SqlParameter("@proname",pro.ProName),
new SqlParameter("@projieshao",pro.Projieshao),
new SqlParameter("@proimg",pro.Proimg),
new SqlParameter("@prodate",pro.Prodate),
new SqlParameter("@leixing",pro.Leixing),
new SqlParameter("@gid",pro.Gid),
new SqlParameter("@yongliao",pro.Yongliao),
new SqlParameter("@jiegou",pro.Jiegou),
new SqlParameter("@jiegoutext",pro.Jiegoutext),
new SqlParameter("@jishu",pro.Jishu),
new SqlParameter("@id",pro.Id),
};
DBHelper.ExecuteCommand(sql, para);
}
catch (Exception e)
{ Console.WriteLine(e.Message);
throw e;
} }
//根据id号查询商品记录
public static ProductModels GetProById(int id)
{ string sql = "SELECT * FROM product WHERE id=@id";
try {
SqlDataReader reader = DBHelper.GetReader(sql, new SqlParameter("@id", id));
if(reader.Read())
{ ProductModels pro=new ProductModels();
pro.Id = (int) reader["id"];
pro.ProName = (string) reader["proname"];
pro.Jiegou = (string) reader["jiegou"];
pro.Leixing = (int) reader["leixing"];
pro.Prodate = (DateTime) reader["prodate"];
pro.Proimg = (string) reader["proimg"];
pro.Projieshao = (string) reader["projieshao"];
pro.Yongliao = (string) reader["yongliao"];
reader.Close();
return pro; }
else
{ reader.Close();
return null; }}
catch (Exception e)
{ Console.WriteLine(e.Message);
throw e; } }
//查询同一类型的商品并存入DataTable[6]中
public static IList
GetAllPro(int leixing)
{ string sql = "SELECT * FROM product,proclass WHERE leixing=cid AND leixing='"+leixing+"' ORDER BY prodate desc";
return GetProBySql(sql);
}
public static IList GetProBySql(string safeSql)
{ List list = new List();
try
{ DataTable table = DBHelper.GetDataSet(safeSql);
foreach (DataRow row in table.Rows)
{ ProductModels pro = new ProductModels();
pro.Id = (int) row["id"];
pro.ProName = (string) row["proname"];
pro.Projieshao = (string) row["projieshao"];
pro.Proimg = (string) row["proimg"];
pro.Prodate = (DateTime) row["prodate"];
pro.Leixing = (int) row["leixing"];
pro.Gid = (int) row["gid"];
pro.Yongliao = (string) row["yongliao"];
pro.Jiegou = (string) row["jiegou"];
pro.Jiegoutext = (string) row["jiegoutext"];
pro.Jishu = (string) row["jishu"];
pro.Cname = (string) row["cname"];
list.Add(pro); }
return list; }
catch (Exception e)
{ Console.WriteLine(e.Message);
throw e;
}
}
}}
5.2.2业务逻辑层
ProductBLL.cs页面
using System.Collections.Generic;
using TanganModels;
using TanganDAL;
namespace TanganBLL
{ public static partial class ProductBLL
{ public static ProductModels AddPro(ProductModels pro)
{ return ProductDAL.Addproduct(pro); }
public static void DelPro(int id)
{ ProductDAL.Delproduct(id); }
public static void DelProByLeixing(int leixing)
{ ProductDAL.DelProCId(leixing); }
public static void UpdatePro(ProductModels pro)
{ ProductDAL.UpdatePro(pro); }
public static IList GetAllPro(int leixing)
{ return ProductDAL.GetAllPro(leixing); }
public static IList GetProBySql(string safeSql)
{ return ProductDAL.GetProBySql(safeSql); }
public static ProductModels GetProById(int id)
{ return ProductDAL.GetProById(id); }
}}
5.3表示层
表现层用于用户接口的展示,以及用业务层的类和对象来“驱动”这些接口[6]。在ASP.NET中,该层包括aspx页面、用户控制、服务器控制以及某些与安全相关的类和对象。在Visual Studio10.0中可以看到表示层的展示,如图5.3。下面以多个页面为例,进行代码分析。
表示层
图5.3表示层的展示
5.3.1首页展示
首页是访问者首先看到的页面,它的制作直接影响企业的形象。首页使用两个Repeater[8]分别对 “公司新闻”“工程实例”两个模块进行数据绑定,使图片和信息都从后台代码读出。展示效果如图5.5所示。
图5.3 首页的展示
1. index.aspx前台相关代码
企业概况