ASP.NET MVC 开源建站系统
一个挺有意思的项目,跟拼图一样的创建网站,先来几张gif感受一下:
官方地址:
下载地址:https://github.com/seriawei/asp.net-mvc-cms/releases
github:https://github.com/seriawei/asp.net-mvc-cms
开源中国社区:http://git.oschina.net/seriawei/asp.net-mvc-cms
演示地址:
后台:
用户名,密码:admin
zkeacms是基于easyframework,使用asp.net mvc4开发的开源cms。
zkeacms一个内容管理软件(网站)。zkeacms不仅只是管理内容,更是重新定义了布局、页面和,让用户可以*规划页面的布局,页面和内容。
zkeacms使用可视化编辑设计,真正做到所见即所得,可直接在预览页面上设计页面。
zkeacms采用插件式设计,支持扩展新插件。
架设环境:
windows server 2003,iis 6 或以上
mssql 2005 或以上
.net framework 4.0,mvc 4
开发环境
microsoft visualstudio 2013
microsoft sql server 2005 以上
关于项目的特性大家到官网去看看就好了,这里主要讲讲code:
资源管理与应用(js/css):
资源定义
script("jquery").include("~/scripts/jquery-1.11.2.min.js", "~/scripts/jquery-1.11.2.min.js").requiredathead(); script("bootstrap").include("~/content/bootstrap/js/bootstrap.js", "~/content/bootstrap/js/bootstrap.min.js").requiredatfoot(); script("jqueryui").include("~/scripts/jquery-ui/jquery-ui.js", "~/scripts/jquery-ui/jquery-ui.min.js");
style("bootstrap").include("~/content/bootstrap/css/bootstrap.css", "~/content/bootstrap/css/bootstrap.min.css").requiredathead(); style("bootstraptheme").include("~/content/bootstrap/css/bootstrap-theme.css", "~/content/bootstrap/css/bootstrap-theme.min.css").requiredathead(); style("site").include("~/content/site.css", "~/content/site.min.css").requiredatfoot();
这里是对脚本和样式文件的定义,显示调用requiredathead()/requiredatfoot(),则无需主动加到页面中,默认都会使用该资源文件,加到页面的开头或者结尾。
资源的使用(.cshtml):
style.reqiured("site").athead(); script.reqiured("jqueryui").atfoot();
@using (script.atfoot()) { <script type="text/javascript"> function create(xxx) { } </script> }
为什么需要这样管理资源?因为zkeacms的页面是由不同的组件构成的,完全由用户选择在页面中显示什么组件,而不同的组件会需要不同的js或css,因此需要动态加载这些资源文件。
简单的数据和视图配置(元数据注册):
[dataconfigure(typeof(carouselentitymetadata))] public class carouselentity : editorentity { public long? id { get; set; } public int? height { get; set; } public list carouselitems { get; set; } } class carouselentitymetadata : dataviewmetadata { protected override void dataconfigure() { datatable("carousel"); dataconfig(m => m.id).asincreaseprimarykey(); dataconfig(m => m.carouselitems).ignore(); } protected override void viewconfigure() { viewconfig(m => m.id).ashidden(); viewconfig(m => m.carouselitems).aslisteditor(); viewconfig(m => m.height).ashidden(); } }
编辑页面直接使用editorformodel:
在视图配置完以后(.astextbox(),.asdropdownlist()...) 直接调用editorformodel即可自动生成表单:
@html.editorformodel()
列表页面:
@( html.grid().setcolumntemplate(col => { col.add(m => m.title, "
filterconfig:
[viewdataarticletype] public override actionresult edit(articleentity entity)
registry.register(m => m.edit(null));
灵活的service
service.add(entity); service.count(m=>m.id=1); service.delete(primarykey); service.delete(m=>m.id=1); service.get(primarykey); service.get(m=>m.id=1); ...
实现却如此简单:
public class carouselservice : servicebase { }