deerchao的blog

Be and aware who you are.

[翻译]Chameleon介绍(1) : 与CS2.1的区别

[原文]:http://getben.com/archive/2007/01/09/introduction-to-chameleon-differences-from-cs2-1.aspx

这篇文章属于我的文章系列:Chameleon介绍

Chameleon代表Community Server界面实现方式上的一个大的更改。变化包括:

  1.  取消了皮肤文件
    Community Server 2.1及以前的版本包含了大量的通用控件,每个都有自己的ASCX文件,用以包含它们的界面结构。Chameleon则为SiteUrls.config里声明的每个URL(可能一个ASPX对应SiteUrls.config里的多个URL)定义单个ASPX页面。

    每个ASPX文件定义了页面展现的整个内容,这样就允许对整个页面布局和行为进行更多的控制。界面开发人员根据情况自己决定是否使用主版页和用户控件。现在一个页面不再是六个或者更多ASCX文件的集合了——默认情况下每个展现的页面只对应一个文件(不计算主版页的话)。

    • 一个完整的Blog界面现在只包括8个文件(CS2.1里是55个,也就是减少了85%)
    • 一个完整的网站界面现在只包括70个文件(CS2.1里是164个,减少了58%)
  2. 通用控件
      Community Server 2.1及更早的版本里的控件具有着专用的用户界面和行为。2.1及以前版本的大多数控件,都通过在它们相关的皮肤文件中查找预先定义的(并且经常是含义模糊的)子控件ID,来生成这些子控件。这样,这些控件就约束了界面开发者的创意:它们只支持预先定义了数量和类型的子控件,而且,它们行为和完成后的动作也是预定义的,无法被改写。

    与之不同,Chameleon则根据Community Server 的API 定义了标准的一系列通用控件。Chameleon控件不是通过界面把数据“推”进页面(在CS2.1里预定义子控件的控件就是采用这种方式),而是从Community Server的API里“拉”出数据,给界面开发人员以无比的灵活性。Chameleon控件支持声明性的,可扩展的“DisplayCondition”,用于定义在什么条件下一个控件应该显示;也支持通过声明来定义的“Actions”,用于定义当控件支持的事件引发时应该怎么处理(比如表单提交成功)。

    Chameleon被实现为一个简单的声明性UI语言,包含了与Community Server API里每一种类型的数据相关的控件。

    例如,在Chameleon,用户的呢称可以通过UserData控件来获取和显示:

    <CSControl:UserData Property="DisplayName" runat="server" Text="Display name is {0}" LinkTo="Profile" />

    这将会输出:

    Display name is Ben

    链接到我的个人资料。

    无论你想要在哪里显示用户的数据,都可以使用同一个控件:UserData,控件明白它自己的上下文...

  3. 隐式的,上下文相关的数据绑定
    • 所有的Chameleon控件都支持隐式的,上下文相关的数据绑定。例如:
      放在SectionList控件里的UserData控件会显示与每个Section相关的第一个所有者的数据(如果这个Section拥有一个或更多的拥有者的话;同样地,UserList控件将会列出这个Section的所有拥有者)。
    • 放在PostList控件里的UserData控件会显示每个Post的作者的相关数据。

    很多用于列出数据的控件(例如SectionList和UserList)都支持“QueryOverrides”选项,允许界面开发人员定义或改写默认的隐式数据源,或者定义分页控件来对列出的数据进行分页。

    隐式数据源可以通过设置控件的DataSource属性来改写。然而,大多数情况下(在CS3.0默认模板里是所有情况下),没有这个必要。

    下面是隐式上下文相关数据绑定的一个示例:

    <CSForum:ForumPostList runat="server">
       
    <QueryOverrides SortBy="SortOrder" PagerID="Pager" PageSize="40" />
       
    <HeaderTemplate>
          
    <ul>
       
    </HeaderTemplate>
       
    <ItemTemplate>
          
    <li>
             
    <CSForum:ForumPostData Property="Subject" runat="server" />
             by
             
    <CSControl:UserData Property="DisplayName" LinkTo="Profile" runat="server" />
          
    </li>
       
    </ItemTemplate>
       
    <FooterTemplate>
          
    </ul>
       
    </FooterTemplate>
    </CSForum:ForumPostList>
    <CSControl:Pager runat="server" id="Pager" />

    将会根据当前的下下文(例如,一个主题)列出论坛贴子,以它们的“SortOrder”排序,40个一页,分页控件会出现在帖子列表的下面:

    *         Post Subject 1 by Ben
    *        
    Post Subject 2 by Ben
    *        
    Post Subject 3 by Ben
    *        

    *         Post Subject 40 by Ben

    1 2 3

  4. 更少(或者没有)预定义的标签语句

    Community Server 2.1及更早的版本里的一些控件和方法,包含了大量硬编码的HTML标签语句。Chameleon控件,一般而言,则为界面开发人员提供了对输出HTML的完全控制。

    所有的Chameleon控件都提供了“Tag”,“CssClass”,以及“ContainerId”属性,用于定义包含控件内容简单标签。例如:

    <CSControl:UserData runat="server" Property="DisplayName" Tag="H1" CssClass="CommonTitle"
     ContainerID="UserName" />

    将会输出

    <h1 id="UserName" class="CommonTitle">Ben</h1>

    所有的Chameleon控件都支持一个“LeaderTemplate”和“TailerTemplate”属性,它们的值会输出在控件内容的前面(Leader)和后面(Tailer)。例如:

    <CSControl:UserData runat=”server” Property=”DisplayName” LinkTo=”Profile”>
       
    <LeaderTemplate>
          
    <div id=”UserArea”>
          
    <h2 style=”color: #ff0000; font-size: 200%;”>
       
    </LeaderTemplate>
       
    <TrailerTemplate>
          
    </h2>
          
    </div>
        
    </TrailerTemplate>
    </CSControl:UserData>

    的输出是当前用户的DisplayName,它被指定的首部和尾部HTML所包含,并且链接到用户的个人资料页面,注意只有当控件被输出时“LeaderTemplate”和“TailerTemplate”才会输出——因此如果界面开发人员在UserData控件上设置了“DisplayCondition”,首部HTML和尾部HTML,以及控件的内容,都只有在条件为真时才会输出。

  5. 取消了界面继承

    界面继承是CS2.1及更早版本里的一个不常使用而且容易令人困惑的功能。如果一个界面没有定义一个需要的皮肤文件,CS2.1和以前的版本会从默认界面加载相应的皮肤文件。这种事不会再发生了。

    Chameleon里所有的界面都必须是完整的。这样使得界面更容易提取,也更加可移植。要想发布一个Chemeleon界面,只需要拷贝web/theme/[THEME_NAME]目录下的内容,不再有依赖于外部(除非界面开发人员引入了对外部的依赖)。

  6. 对控制面板的分离

    控制面板现在与网站界面完全分离——控制面板需要的所有的主版页,样式表,图片等等现在都包含在WEB/ ControlPannel目录下。界面开发人员不再需要手动分离控制面板(译:需要的部分),或者设计同时支持前台网站和后台控制面板的界面。

这些就是CS2.1和CS2007里界面开发的比较大的区别。在我的下一篇Chameleon文章里,我将开始介绍Chameleon基本控件。

如果你有任何关于Chameleon的问题,请通过我的联系表单或发表评论来告诉我。我会在这一系列的最后的文章里回答所有这些问题。

posted on 2007-04-30 05:16 deerchao 阅读(402) 评论(7)  编辑 收藏 网摘 所属分类: Chameleon

评论

#1楼  2007-04-30 09:38 网际飞狐      

很好!   回复  引用  查看    

#2楼  2007-04-30 09:45 gyf19 [未注册用户]

关注   回复  引用    

#3楼  2007-05-09 17:51 7798互动社区 [未注册用户]

哈哈,明白了。
我本以为Chameleon是单独的什么项目,原来是2007中的一部分。
受教了,明天继续!   回复  引用    

#4楼  2007-05-16 10:00 7798互动社区 [未注册用户]

打开aspx文件,总是报:
Unrecognized tag prefix or device filter 'CSControl'.

这个问题要怎么解决呢?   回复  引用    

#5楼 [楼主] 2007-05-16 14:10 deerchao      

这个问题我目前也不太清楚。

另外,你可以登录CS2007了吧?应该是Cookie的问题,与以前的版本冲突(如果两者安装在同一台服务器上,并且其中至少一个Cookie的域设置为xxx.com的话)。   回复  引用  查看    

#6楼  2007-05-17 09:05 7798互动社区 [未注册用户]

嗯,是的。我已经可以正常登陆了。   回复  引用    

#7楼  2007-05-17 10:42 7798互动社区 [未注册用户]

很奇怪的,如果你只打开ASPX文件,不打开项目的话,就不报错了。
能正常编辑了。   回复  引用    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-05-13 21:41 编辑过
Google站内搜索


China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!

相关文章:

相关链接:


 
<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

公告

给网络添加价值,就是让自己增加价值.

本博客所有内容,均为原创或对互联网已有资源的再加工,希望对你有用.在声明原作者的前提下,你可以任意使用,但本人对其正确性,使用的后果等不做任何担保,也不负任何责任.

正则表达式30分钟入门教程 v2.21 2007-8-3

I Want Spec#!

与我联系

搜索

 

常用链接

留言簿(66)

我管理的小组

我的标签

随笔档案(127)

文章分类(9)

文章档案(9)

新闻档案(9)

Links

积分与排名

最新评论

评论排行榜