Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET 2.0数据教程之六十二:创建一个用户自定义的Database-Driven Site Map

ASP.NET 2.0数据教程之六十二:创建一个用户自定义的Database-Driven Site Map2010-08-13 翻译:CSDN 王文涛返回“”

ASP.NET 2.0数据教程之六十二:创建一个用户自定义的Database-Driven Site Map Provider

导言:

ASP.NET 2.0的网站地图(site map)功能允许页面开发者在一些 持久介质(persistent medium),比如一个XML文件里,自己定义一个web程序的 site map.一旦定义了之后,我们可以通过System.Web命名空间的SiteMap class 类或某个Web导航控件,比如SiteMapPath, Menu, 或TreeView来对其进行访问。 site map系统使用的是provider model模式,所以可以创建不同的site map,并 将其应用到一个web应用程序。ASP.NET 2.0默认的site map provider,其结构为 一个XML文件。在教程《Master Pages and Site Navigation》里我们创建了一个 Web.sitemap文件,它就包含了这种结构,并且在教程的每一个新部分里我们都要 更新其XML.

当site map的结构是静态的时候,默认的这种基于XML(XML- based)的site map provider工作正常,就像本系列教程一样。但是在很多时候我 们需要动态的site map.如图1的site map,每个种类以及属于该种类的产品在网 站的结构里做层次状体系分布。在该site map里,当访问根目录的web页面时,将 列出所有的种类;再访问某个具体的种类的根目录时,将列出属于该种类的所有 产品;再访问某个具体的产品时将列出该产品的详细信息。

图1:Categories 和 Products构成了Site Map的层次结构

这种 基于category 和product的结构可以通过"硬编码"的方式添加到 Web.sitemap文件.每当对category 或 product进行添加、删除、重命名等操作时 ,都需要对该文件进行更新。很自然的,如果其结构是通过数据库,或更理想地 ,是从业务逻辑层来获取的,那么对site map的维护是很简单的。那样的话,只 要对products 和 categories进行添加、删除、重命名时,site map会自动的更 新以反应这些变化。

由于ASP.NET 2.0的site map是建立在provider模式 的基础上的,因此我们可以创建一个自定义的site map provider,从数据库或某 个层来获取数据.在本文,我们创建的provider将从业务逻辑层获取数据。让我们 开始吧!

注意:本文创建的用户定制site map provider仅仅依赖于系统 的层及其数据模式(data model)。Jeff Prosise的文章《Storing Site Maps in SQL Server》 (http://msdn.microsoft.com/msdnmag/issues/05/06/WickedCode/)

和《 The SQL Site Map Provider You’ve Been Waiting For》

(http://msdn.microsoft.com/msdnmag/issues/06/02/wickedcode/default.aspx )

考察了将site map数据存储在SQL Server的方法。