时 定义多个文档, 能使多个文档同时使用相同的样式, 从而减少了大量的冗余代码。
5.4
系统配置
5.4.1 Web.config 文件配置 ASP.NET 应用程序的配置功能放在 Web.config 文件中,它包含每一个具体 Web 应用程序的配置信息。在
程序运行时,ASP.
NET 使用分层虚拟目录结构的 Web.config 文件提供的配置信息为每个惟一的 URL 资源计算一组配置设置,然 后缓存结果配置设置,以供所有页面对资源的请求使用。 Web.config 文件对于访问站点的用户来说是不可见的,而且也是不可访问 的,它基于 XML,每个配置文件都包含 XML 标记和子标记的嵌套层次结构。 新闻系统的 Web.config 文件中的配置:
通过键/ 值对 key 和 value 配置数据库连接的相关信息,将 ACCESS 数据库 lbnews.mdb 文件用相对路径的方式设置为字符串"MdbPath"在程序代码中进行连接引用。 5.4.2 配置发布主页 首先要创建虚拟目录,新建虚拟目录的步骤如下: ● 打开 IIS(Internet 信息服务) ,在默认网站上右击,在快捷菜单中选择新 建—>虚拟目录; ● 在弹出的虚拟目录创建向导对话框里点击“下一步” ; ● 输入虚拟目录别名; ● 选择网站内容所在目录路径; ● 设置“访问”权限。 在所建虚拟目录上右击,在弹出菜单中选择浏览,或在浏览器里输入相应网 址,都可运行浏览程序。虚拟目录不在目录
列表中显示(也称为 WWW 服务的 “目录浏览”,要
访问虚拟目录,用户必须知道虚拟目录的别名并在浏览器中键 ) 入 URL。对于 WWW 服务,也可以在
HTML 页面中创建链接。发布网站的 时候,把程序首页的名字(index.aspx 或 default.aspx)写在 IIS 当中就可以访问 了。
5.5 系统部分重要功能及其代码
5.5.1 Web 用户控件 该系统中创建了两个 Web 用户控件 top.ascx 和 bottom.ascx,在首页、新闻 详细内容查看、新闻分类等页面的 HTML 代码里都进行了引用,调用方式为:
<%@ Register TagPrefix="uc1" TagName="bottom" Src="bottom.ascx" <%@ Register TagPrefix="uc1" TagName="top" Src="top.ascx" %>
%>
@ Register 指 令 注 册 用 户 控 件 , 同 时 把 属 性 TagName( 标 签 名 ) 和 TagPrefix(标签前缀)添加到@ Register 指令中, 属性表示该用户控件相对于父 Src 页面的相对地址。用户控件也是服务器端控件,还必须在用户控件代码中添加 Runat=server 属性,用法如下:
其中 top.ascx 用户控件作用是显示首页图片、“首页”文本字体、新闻分类、 新闻风格和当前日期,bottom.ascx 用户控件作用是显示底部相关网站信息等。 用户控件是非常易于代码重用的, 可以把许多相关功能和用户界面封装在一 个用户控件中,然后在任何需要该功能的地方重用此控件。 5.5.2 通用类代码 在所有相关页面显示文件和 Web 用户控件的代码隐藏文件.aspx.cs 或.ascx.cs 中,通过对数据访问类的引用(以创建类实例方式),调用数据访问类里的相应函 数完成相关功能,如建立数据库连接、打开和关闭数据库、对数据库执行
查询、 插入、删除和更新操作、页面
登陆检验等。 此处列举 Conn 类(数据访问类)中主要函数的源码: public class Conn { // 建立数据库连接字符串 public OleDbConnection Lb_Conn=new OleDbConnection(strConn); public static string strConn //通过创建一个属性来连接数据库 { get //使用 get 方法返回此属性的值 { StringBuilder strResult = new StringBuilder(); strResult.Append("Provider = Microsoft.Jet.OLEDB.4.0"); strResult.Append("; "); strResult.Append("Data Source = "); strResult.Append(HttpContext.Current.Server.MapPath(".")); //HttpContext 应用程序上下文类,Current 属性表示进程中当前 请 //求的上下文,MapPath()方法表示返回与 Web 服务器上的指定虚 //拟路径相对应的物理文件路径,此处作用是创建数据库文件的虚拟路径 strResult.Append("\\");
strResult.Append(ConfigurationSettings.AppSettings["MdbPath"]); // 从 配 置 文 件 中 取 到 数 据 库 连 接 字 符 串 , “MdbPath” 为 Web.config //文件中的键/值对所设置的 key 值 return strResult.ToString(); //返回字符串类型 } } public OleDbDataReader ExecuteOleDbDataReader(str
ing strSql) { //此函数表示从数据库读取数据时以只进只读的行流的方式进行 OleDbCommand cmd=new OleDbCommand(strSql,Lb_Conn); OleDbDataReader rd=cmd.ExecuteReader(); // 通 过 调 用 对 象 OleDbCommand 的 ExecuteReader() 方 法 创 建 //OleDbDataReader 对象 return rd; } public DataSet CreateDataSet(string strSql,string tableName) { OleDbDataAdapter da=new OleDbDataAdapter(strSql,Lb_Conn); //创建 DataAdapter 类实例,可用于填充 DataSet 对象和检索、更新 数据 DataSet dst=new DataSet(); da.Fill(dst,tableName); //填充 DataSet(数据集)中的一个表 return dst; } public int ExecuteSql(string strSql) { OleDbCommand cmd2=new OleDbCommand(strSql,Lb_Conn); int result=cmd2.ExecuteNonQuery(); //对数据库执行插入、删除和更新等操作,返回影响数据库记录的 行数 return result; } } 5.5.3 添加发布新闻 添加发布新闻在该系统中显然起着很关键的作用,在添加新闻管理页面里, 通过单击“添加”按钮执行新闻的添加,但能不能直接发布,还要根据权限来判 断, “添加”按钮的单击事件主要程序如下: Conn ds1=new Conn(); //调用数据访问类 ds1.DBopen(); //打开数据库 string title=Lb_Title.Value.ToString(); //新闻标题 string Content=LbNewsContent.Value.ToString().Replace("'","
"); // 新 闻
内容 string Author=Lb_Author.Value.ToString(); //新闻作者 string TitlePic=Lb_TitlePic.Value.ToString(); //是否首页滚动图片 Intro=LbNews_Intro.Text.ToString().Replace("\r\n","
").Replace("'","
string "); //新闻简介
string Lb_Grade;//用户级别 int lb_check; //判断新闻是否需要审核,1:不需要审核,0:需要审 核 try //捕获异常范围 { if (Lb_Grade=="1") //用户级别 1 为新闻输入员 { lb_check=0; //需要审核 } else //审核员或管理员 { lb_check=1; //不需要审核 } int result=ds1.ExecuteSql("insert into Lb_News([n_cid],[n_commend],[n_index],[n_ispic],[n_title],[n_spic],[n_author],[n_c ontent],[n_publisher],[n_intro],[n_check])values("+Lb_Classid+","+Lb_IsCommend+ ","+Lb_IsIndex+","+Lb_IsPic+",'"+title+"','"+TitlePic+"','"+Author+"','"+Content+"',' "+Publisher+"','"+Intro+"',"+lb_check+")"); //将所添加的新闻标题、内容、作者和来源部门等插入到数据表 Lb_News 中 if (result>0) //数据添加到数据库中成功 { if (Lb_Grade=="1") { ds1.alert(" 添 加 成 功 , 需 等 待 管 理 员 审 核 ","admin_articleadd.aspx"); } //输入员添加新闻的话弹出对话框提示需审核, 并重置当前 添加页面 else { ds1.alert("添加成功","admin_articleadd.aspx"); } //审核员或管理员添加的话就直接发布到网站上, 并重置当 前添加页面 } else //添加不成功 { Response.Write ("添加新闻失败"); } }
catch(System.Data.OleDb.OleDbException ex) { Response.Write (ex.ToString()); } //以上操作中如有异常发生则捕捉 finally { ds1.DBclose(); }//关闭数据库连接 5.5.4 用户
注册 该系统的内容是需