准备html
源码地址: https://github.com/NewLifeX/NewLife.Cubegit
演示地址:http://cube.newlifex.com 能够直接注册用户以及选用第三方登陆github
单点登陆:htts://sso.newlifex.comweb
讲课视频1:https://pan.baidu.com/s/1zEUkG7YXnVdvTLq6dJBhzgsql
讲课视频2:https://pan.baidu.com/s/10omTlET99DF-4cgG2bObzw数据库
开始json
1.初识魔方 魔方后台结构介绍bootstrap
魔方是一个基于ASP.NET MVC的多角色的权限管理系统,新版本的设计目标是全部页面封装在DLL里边,经过覆盖修改视图,作到极简化的使用xcode
1登陆缓存
其中集成了SSO单点登陆及第三方OAuth登陆,其中既能够做为OAuth客户端也能够做为OAuth服务端,能够本身内部发布一个sso服务器端,只须要发布cube.dll,xcode.dll,core.dll三个dll的空项目便可
1.1顶部菜单栏
顶部菜单有栏目点击及用户修改注销等功能
1.2工做台首页
应用系统:地址能够解决Nginx转发的路径不对的问题
域名地址:多ip或者Nginx代理的显示
重启系统功能特别有用(缓存没有更新,配置没有生效,重启后会从新加载,轻量级重启,不用iis整个重启
程序集列表:能够分析是否缺乏第三方组件的引用
.netcore session不建议使用,因此之后尽可能不用session
内部版本,后边两个字段是编译出来的,编译时间来自于内部版本好比2.4.6805.17968,其中内部版本号6805基于2000年1月1日的天数,后边的17968字段是后边的秒数除以2的一个结果
1.3左侧区域菜单
菜单是树状的多层菜单,菜单树是内存计算的,1000对之内会总体缓存,所以菜单更新后不必定实时显示,由于有缓存,须要重启一下
2.系统菜单中的4个基本功能
用户
记录每一个用户,能够对用户信息进行管理,其中清除密码功能比较特别,清除密码后能够任意密码登陆,登陆密码做为新密码存储在数据库中
日志
日志做为系统的安全与审计,是不能修改,添加,删除的.其中包含操做记录,访问统计等
角色
系统默认了管理员,游客,普通用户,高级用户等几个角色,其中在第一个默认登陆系统的帐号会自动替换为管理员角色,admin自动降级为游客,角色与名称能够根据本身的业务进行修改,其中咱们支持多角色,一个主角色,多个次要角色,多角色是或的关系,只要有权限都支持.
菜单
对系统菜单与业务菜单进行编辑与修改,其中系统菜单里边修改事后必定要勾选上必要,否则会被魔方初始化覆盖,其中可见指的是是否在左侧菜单栏中显示,能够自定义权限
业务菜单
系统启动后会自动扫描区域与控制器,将区域做为一级菜单加载到数据库,将控制器做为二级子菜单加载到区域菜单下边,其中菜单名字经过[DisplayName("菜单名称")]来注解
3.高级功能
3.1魔方设置
基本设置
对系统的一些基本设置,包括全局调试,日志等级,日志目录,插件服务器设置等
系统设置
对系统的名称进行设置,登陆页,页面头部的名称,其中开发者模式的开关控制着页面的sql输出,以及高级功能里边的生成Form表单与生成List数据页的视图,启用与否表明整个魔方系统是否启用
数据中间设置
xcode中间件设置,其中最重要的反向工程设置,默认为on,这个时候会根据实体文件对数据表进行检测,其中会新增字段,不能删除与修改字段,缓存时间通常是10秒,能够设置默认的备份数据库目录,主要针对sqlite文件数据库
魔方设置
显示时间控制,做为整个页面的数据库查询时间的一个辅助开发功能设置
插件服务器设置,这个是全部的插件以及资源服务器的一个设置
工做台页面设置,做为一个后台权限系统登陆进来展现的首页
布局页设置,是整个mvc布局页的一个设置
密码登陆,启用注册,自动注册强行绑定用户设置都是跟用户相关的一些设置
下拉框选择,其中下拉框开启后样式为bootstrap,页面加载会比较耗时,若是追求极速,能够考虑关闭下拉框选择
SSL做为https的强制使用
3.2文件
在线的文件管理系统,能够直接上传bin文件以及下载sqlite的备份文件下载到本地
3.3页面右边高级功能
清空数据表:其中清空表是checkident操做,会把自增ID从新从1开始
删除所有:删除当前符合查询条件的所有记录
导出xml与json,按照xml或者json格式导出当前符合查询条件的记录
导出excel,测试过最多导出过90w的记录
生成Form表单:生成表单视图模版文件,能够随意修改视图页面
生成List数据模版,随意修改列表数据页
4.魔方项目引用及使用
4.1魔方dll的引用
新建.NET Framework MVC项目
在新建项目中右键选择管理Nuget包中搜索NewLife.cube而后安装到本项目中,该cube.dll会自动引入XCode.dll与core.dll,其中cube所需的资源包,项目会自动下载到Content目录下边
安装完成后会在目录生成Model.xml与Build.tt文件,其中Model.xml文件是数据库参考文件
数据库模型文件详细说明见图所标识:
Index为默认主键索引,其中表名+主键名称会在实体类Biz.cs中自动生成扩展属性
4.2实体的生成
在build.tt文件上右键选择运行自定义工具就会在Model.xml文件中设定的目录下生成实体文件.cs数据文件,biz.cs业务文件,分部类,一个类放在多个文件里边,biz.cs只是在第一次生成,之后不会覆盖生成,.cs每次更新表都会从新生成
4.3魔方的使用区域与控制器
在项目上右键在弹出菜单中选择添加,在子菜单中点击区域按钮新增区域Areas,即在左侧新建一个一级菜单
我新建了一个Test的区域,修改区域的AreaRegistration文件,将继承修改成AreaRegistrationBase,并使用注解[DisplayName("区域名称即一级菜单的名称")]的方式为该菜单的名称
新建控制器继承自EntityController<实体类>,会自动生成一个二级子菜单,经过注解[DisplayName("二级菜单的名称")]
运行获得该实体列表页,要想列表中某些字段不显示,只须要在控制器中的构造方法里边输入ListFields.Remove("列名”)
public class MyUserController : EntityController<Log> { public MyUserController() { ListFields.Remove(Log._.CreateUserID); } }
4.4高级按钮生成表单与列表的视图文件
生成模版文件后,点击工程的显示全部按钮,而后在对应的控制器的view目录下将模版文件包括在项目中,这个时候能够对模版进行任意覆盖修改,本身能够多修改运行试试效果,特别注意
须要在views下边的webconfig文件中加入 如下的命名空间
<add namespace="NewLife" />
<add namespace="NewLife.Cube" />
<add namespace="NewLife.Reflection" />
<add namespace="NewLife.Web" />
<add namespace="XCode" />
<add namespace="XCode.Membership" />
5.魔方的精髓 模版覆盖
5.1模版介绍
模版分为表单模版Form.cshtml,列表模版List.cshtml,布局模版,每一个模版能够分别单独覆盖,能够局部总体覆盖,真正作到任意覆盖,其中最重要的是能够根据优先级顺序进行总体局部覆盖,须要整站覆盖直接修改 Ace_Layout.cshtml
其中优先级顺序依次为项目Views-->控制器Views-->Areas Views-->魔方内置Views
列表模版详细说明以下:整个模版分为_List_Toolbar.cshtml,_List_Data.cshtml,_List_Pager.cshtml
其中_List_Data.cshtml又包含两部分数据部分:_List_Data_Item.cshtml 与 操做部分:_List_Data_Action.cshtml
_List_Toolbar.cshtml是最复杂的功能其中包含批量操做_List_Toolbar_Batch.cshtml,日期搜索_List_Search.cshtml对应(_DateRange.cshtml)不知为什么要这样多一个search的页面,不敢揣摩圣意,关键字查询_List_Toolbar_Search.cshtml,高级按钮功能,_List_Toolbar_Adv.cshtml
如今示例一下修改Search的查询:首先在控制器中重载一下Search方法,在实体中实现Search的高级搜索方法
protected override IEnumerable<UserOnline> Search(Pager p) { var id = p["id"];//取当前页面的id值 //p["q"]关键字的值 return UserOnline.Search(p["q"],p); }
最后可使用自定义工具RazorGenerator将视图文件编译成DLL文件,能够联机搜索安装
当项目Views同时使用cshtml文件与DLL的时候优先使用cshtml文件
神奇黑科技:http://cube.newlifex.com/School/Class/json?q=11&Sort=ID&Desc=True&key=abcdefg
魔方支持json,xml导出数据,其中key为token,q为关键字,sort是排序字段