N2CMS Mvc Examples 学习记录 (1) – 整体解析

来源:互联网 发布:买衣服淘宝还是京东好 编辑:程序博客网 时间:2024/06/16 20:26

这个示例用到了N2框架和管理界面,这样就不用对数据的存储和管理发愁了(都交给N2了),剩下的工作就是利用N2框架来快速地搭建前台的页面。实际上既可以用WebForms来实现这些页面,也可以使用MVC 2(MVC 3好像还不支持)来实现,这个例子使用的就是后者。N2CMS提供了其他的示例和模板来帮助我们搭建更好的网站,不过从一个简单的例子来开始可以更轻松的学习和使用N2CMS。

从N2CMS的角度来看,所有的具体内容(即要显示在页面上的信息)都是一种内容项(ContentItem)的实例,不同的内容项用于存储不同格式的内容,比如新闻容器项要能获取包含的新闻的列表,而新闻项则用来存储和提供一条具体的新闻信息,评论项则用来存储和提供对某个新闻(当然不局限于新闻)的评论。在MVC中,数据显然是由模型(Model)来定义的,当然还少不了控制器(Controller)和视图(View)。

在N2CMS Mvc示例中,定义了5种内容项(表示普通内容项的ContentPage、表示评论的CommentItem、表示新闻容器或者叫做新闻列表的NewsContainer、表示新闻内容的NewsPage和表示文本构件的TextPart),按照约定,它们都必须是N2.ContentItem的子类,为简化代码,示例中提供了一个抽象父类AbstractPage,这个抽象类是N2.ContentItem的直接子类,这5个内容项类中的4个都是这个抽象类的子类,这4个类将会以页面的形式显示出来,剩下的TextPart类则被当作构件(part)来使用,构件可以嵌入到页面的某个部位,具有很强的灵活性。

基本上每个内容项类(模型)都有对应的控制器,控制器类最好定义为N2.Web.Mvc.ContentController的子类。不过值的注意的是抽象的AbstractPage类有一个对应的控制器类,而它的一个具体的子类,ContentPage,代表普通内容项,却没有对应的控制器。简单的控制器(如ContentController)不需要任何方法,因为它的父类已经提供了基本的Index()方法,如果子类有特殊的需要,可以重写此方法,并提供其他必需的方法。

有了控制器,还需要对应的视图。显然每个控制器的每个方法都有对应的视图,将会在页面中显示模型的视图用ASPX模板呈现,而以构件显示模型的视图则用ASCX模板呈现。可以使用母版而来简化公共的模板内容。

Mvc示例还提供了一个StaticController控制器和对应的视图,它没有模型,N2CMS无法管理它,所以它只能显示静态内容。

运行并安装后,就可以使用它定义好的内容项来创建不同的内容页了,整个操作过程简单易学。下面是我折腾半天后的首页截图:

image

原创粉丝点击