- 作者:zhaozj
- 发表时间:2020-12-23 11:02
- 来源:未知
这篇文档包含一个有关CSK的结构简介。文档的第一部分主要介绍CSK的两个特点:皮肤和由数据库生成页面和目录,你可以学到这两个特点是怎么实现的。这篇文档的第二部分讨论修改CSK的方法。第一,你将学习怎么建立一个新的主题,以之用来改变站点的外观。接下来学习的是怎么建立一个在CSK平台上工作的模型组件,例如像Jobs模型组件。
Part 1:CSK的特点
★ 皮肤系统
CSK是建立在asp.net社区应用程序上的(www.asp.net)。就像ASP.NET社区应用程序一样,它也是利用皮肤系统从代码上决定用户接口。一共有四种类型的皮肤供CSK使用:Page Skins - Page Skin 决定所有层上的页面。例如,它可以决定栏目导航在页面上的位置。一般地,一个站点只选一种Page Skin。Content Skins - Content Skin被用来组织页面上的内容部分。例如,一个Login页面的外观就是由Content Skin决定的。一般地,Content Skin 和站点的页面是一对一的关系。Control Skins - Control Skin是用来定制一个控制的外观。例如,栏目导航控制的外观就是由Control Skin实现的。(还有好多种控制,如用户等)Template Skins - Template Skin决定了控制模板的外观,像在一个Repeater控制里的ItemTemplate and HeaderTemplate。与comment views的区别,例如threaded,embedded,nested,通过不同的模板皮肤来实现。
无论何时,当你打开一个CSK页面时,一组皮肤被调用以之决定页面外观。例如,你一旦为了站点选择了robotico主题,并请求了一个login页面,下面的皮肤被调用了(不是完整的列表):
Robotico Page Skin 位于:/Themes/Robotico/Skins/PageSkins/Default.ascxLogin Page Content Skin 位于:/Themes/Robotico/Skins/ContentSkins/User_login.ascxSection Menu Control Skin 位于:/Themes/Robotico/Skins/ControlSkins/Sections_SectionMenu.ascx
余下的部分是怎样完全生成的呢?事实上,皮肤支持继承。如果一个皮肤不能在特定的主题中被调用的话,系统就自动从缺省主题中调用。这是非常重要的一点,它意味着当你建立一个新的主题时,不需要建立每一个皮肤和控制。你只需要覆盖你想修改遥皮肤即可。皮肤是由HTML代码以及asp.net控制(不是代码)组成的。例如,Login页面的皮肤User_login.ascx可能是如下的一些内容:
<%@ Control %><p>Login</p>Please enter your username and password below.<br>If you are a new user, click <a href="Users_Register.aspx">here</a> to register.
<asp:Panel id="pnlInvalidUsername" Runat="Server"> The username you entered is invalid!</asp:Panel>