具有蓝色背景的控件。但是,如果我没有更改过该主题的配色方案,这就是最明智的做法了。要新建一个主题,最简单的方法就是以现有的主题作为模型,然后修改其外观和样式。
返回页首
创建新模块
尽管这比创建主题有点复杂,但是您还可以为社区创建新模块。例如,我创建了一个名为 Jobs 的模块,用它来跟踪工作公告。
要新建模块,首先向 CommunityStarterKit 数据库中添加一个用来跟踪新模块项的新表,并将该表命名为 Community_module(其中,module 是新模块的名称)。该表的主键应当命名为 module_ContentPageID,连同要针对该模块收集的其他字段的名称。
您将需要可用于添加新模块项的存储过程,编辑现有项目,检索项目列表,然后检索单个项目的所有字段。将 Jobs 模块的存储过程命名为 Community_JobsAddJob、Community_JobsEditJob、Community_JobsGetJobs 和 Community_JobsGetJob。我复制了 Articles 模块的存储过程,将它们用作 Jobs 存储过程的模型,并添加跟踪工作公告所必需的其他字段。Community_JobsGetJobs 用于检索 Jobs_Section 页中的工作列表。该模块调用 Community_GetPagedSortedContent 函数以对输出内容进行分页(请参阅图 5)。
在 Engine\Modules 下创建一个将包含该模块代码的新文件夹。在该文件夹下,应当有三个名为 Components、Content 和 Controls 的子文件夹。对于 Jobs 模块,我创建了 Engine\Modules\Jobs\Components、Engine\Modules\Jobs\Content 和 Engine\Modules\Jobs\Controls folders。Components 文件夹应当包含两个类库,第一个类库包含从 ContentInfo 类派生的类,第二个类库包含负责调用每个模块的存储过程的实用工具类。
使用 Visual Basic .NET 版本的 Community Starter Kit,我创建了一个名为 JobInfo.vb 的类库,其中包含一个单一类 (JobInfo)。我将 ArticleInfo.vb 类库用作我的类库的模型。JobInfo 构造函数使用单一参数 DataReader,通过该参数从 Jobs 表抽取每个字段,并将它们放入随后将作为 JobInfo 类的一系列属性公开的私有变量中(请参阅图 6 中的代码)。
JobUtility 类提供 Jobs 模块和 Jobs 存储过程之间的接口,其中包含单一类 JobUtility,该类有四种方法:AddJob、EditJob、GetJobs 和 GetJobInfo。GetJobs 方法负责调用 Community_JobsGetJobs 存储过程并返回 JobInfo 对象的 ArrayList(请参阅图 7)。
对于该模块支持的每个基本类型的页面,Content 文件夹都应当包含一个类库。这些类将成为以后创建的用户控件的代码。至少,您的模块需要为下面每种类型的页面提供类:添加项目、编辑项目、显示项目列表(对于区域页)和显示单个项目(对于项目深化页)。这些类需要分别从 ContentAddPage、ContentEditPage、ContentListPage 或 ContentItemPage 派生。正如您可能已经注意到的那样,Content 往往与它们所调用的存储过程具有一对一对应关系。
我创建了四个类库(AddJob.vb、EditJob.vb、JobSection.vb 和 Job.vb),每个类库都以 Articles 内容类库为模型。内容类用来粘附 JobInfo 类和用户控件外观。Job.vb 类库中的 Job 类负责显示特定工作列表的完整信息(请参见图 8)。
对于显示在 Job 和 JobSection 页上的每个工作项,Controls 文件夹将包含自定义的服务器控件。我为 Job 页创建了下列服务器控件:JobCompany、JobTempStatus、JobTempMonths、JobStartDate、JobLocation、JobEducation、JobExperience、JobSalary、JobContactName、JobContactPhone、JobContactEmail、JobContactWeb 和 JobEditContent。对于 JobSection 页,我创建了 ItemJobLocation 控件。JobCompany 自定义控件显示在图 9 中。
现在,您需要创建一些用户控件,来表示与在上一步中创建的 SkinnedCommunityControl 类相对应的每个基本模块页的内容外观。至少,您必须为 Default 主题提供一组内容外观用户控件。还可以为其他主题提供内容外观用户控件。
我在 Themes\Default\Skins\ContentSkins 文件夹下创建了三个用户控件:Jobs_AddJob.ascx、Jobs_JobSection.ascx 和 Jobs_Job.ascx。没有用来编辑工作的用户控件,这是因为 Jobs_AddJob.ascx 控件执行双重任务,它为添加工作和编辑工作均提供支持。图 10 中显示了 Jobs_Job.ascx 用户控件的摘录。请注意对 Engine\Modules\Jobs\Controls 文件夹中名为 JobCompany 和 JobTempStatus 的自定义服务器控件的引用。
此时,我向新内容控件的默认样式表 (Themes\theme\ Styles\default.css) 添加了样式。图 11 显示了其中的几个新样式。
最后,我向数据库中的 Community_PageTypes 和 Community_NamedPages 表添加了用于该项目以及项目区域页的条目。借助于模仿现有 Community_MaintenanceInitializeArticles 存储过程创建的名为 Community_ MaintenanceInitializeJobs 的存储过程,该步骤要相对简单。运行该存储过程会创建必要的表格条目。

图 12 JobSection 页面
图 12 显示了 Ballard .NET 社区站点的 JobSection 页。如果您单击工作公告下面的“Read More”链接,将显示如图 13 所示的 Job 页。

图 13 Job 页
从本文开头的链接地址下载构成 Jobs 模块(以及 Small 主题)的文件副本。
返回页首
小结
ASP.NET Starter Kit 提供几个预包装的示例应用程序,这些应用程序既提供可正常工作的 Web 站点模板,又提供用 Visual Basic .NET、C# 和 J# 编写的易用的示例代码。这些工具包代表最常见的 Web 应用程序,包括社区、商务、门户、报表和项目时间跟踪站点。本文讨论了 Starter Kit 的安装和使用,以及通过代码(即使您没有 Visual Studio .NET 副本)自定义和扩展 Community Starter Kit 的方法。如果您在寻求一种即刻开始创建 ASP.NET 站点的方法,这些工具包可能是您要寻找的一组便捷工具。还需注意的是,个别的提供 Web 托管的公司可提供对 Starter Kit 的自动部署以及帐户注册。有关详细信息,请参阅 http://www.asp.net/hosters。
感谢 Stephen Walther 帮助我撰写本文。
有关背景信息,请参阅: ASP.NET Starter Kits http://msdn.microsoft.com/aspnet
Paul Litwin 是 Deep Training 的 CEO 兼高级培训师,该公司主要从事 .NET 培训。他是 Microsoft ASP.NET Connections 的会议主席,他亲自撰写或与人合著有多本书籍,其中包括 ASP.NET for Developers (SAMS, 2001)。他目前正在撰写一本有关 ASP.NET 的新书。您可以通过 paull@deeptraining.com 与 Paul 联系。
转到原英文页面
返回页首
上一页 [1] [2] |