/{lang},/{lang}/,/{lang}/index 首页
/{lang}/{node_code} 栏目页
/{lang}/{node_code}/list,/{lang}/{node_code}/list/{page}列表页路由
/{lang}/{node_code}/detail/{content_id}详细页路由
/{lang}/Error错误页面页路由
多语言以语种开头:sc/tc/en ,如无语言标识则未默认语言:sc
路由结构为:/,index,{lang},{lang}/,{lang}/index
多语言以语种开头:sc/tc/en ,如无语言标识则未默认语言:sc
路由结构为:/{lang}/{node_code},/{lang}/{node_code}/
多语言以语种开头:sc/tc/en ,如无语言标识则未默认语言:sc
路由结构为:/{lang}/{node_code}/list 当前页码为1
路由结构为:/{lang}/{node_code}/list/{page} 当前页码为{page}
var page = Convert.ToInt32(string.Concat(ViewData["page"], ""));可获取当前的页数
多语言以语种开头:sc/tc/en ,如无语言标识则未默认语言:sc
路由结构为:/{lang}/{node_code}/detail/{content_id}当前内容记录ID为{content_id}
var data_id = Convert.ToInt64(string.Concat(ViewData["data_id"], ""));可获取当前内容主键ID
site_content row_data = ViewData["row_data"] as row_data;可获取当前内容记录实体
多语言以语种开头:sc/tc/en ,如无语言标识则未默认语言:sc
路由结构为:/{lang}/error
cshtml模板路经为:error/index.cshtml
多语言以语种开头:sc/tc/en ,如无语言标识则未默认语言:sc
路由结构为:/{lang}/search?q={key}当前要搜索的关键字为{key},默认页码为1
路由结构为:/{lang}/search/list?q={key}当前要搜索的关键字为{key},默认页码为1
路由结构为:/{lang}/search/list/{page}?q={key}当前要搜索的关键字为{key},默认页码为{page}
cshtml模板路经为:search/index.cshtml
常用实体类字段说明
| 字段 | 类型 | 描述 |
|---|---|---|
| id | bigint | 主键ID,即栏目ID |
| lang | varchar | 语种标识:tc,en,sc |
| lang_flag | int | 1此记录只用于当前 2表示此记录既用于繁体有用于简体(视具体需求而定) |
| out_link | varchar | 栏目链接地址(一般用于外链) |
| node_code | varchar | 栏目代号 |
| parent_node | bigint | 上级栏目ID |
| node_name | varchar | 栏目名称 |
| node_tpl | varchar | 栏目页模板 |
| list_tpl | varchar | 列表页模板 |
| content_tpl | varchar | 内容页模板 |
| node_pic | varchar | 栏目图片 |
| node_atlas | text | 栏目图集多个用;分割 |
| node_desc | text | 栏目说明 |
| node_remark | text | 栏目备注 |
| need_review | StatusEnum | 是否下的内容是否需要审核:StatusEnum.Legal标识需要审核,StatusEnum.UnLegal不需要审核 |
| meta_keywords | text | meta关键字 |
| mate_description | text | meta说明 |
| show_menu | StatusEnum | 是否展示菜单:StatusEnum.Legal显示,StatusEnum.UnLegal不显示 |
| show_path | StatusEnum | 是否展示导航:StatusEnum.Legal显示,StatusEnum.UnLegal不显示 |
| nsort | int | 排序号,增加栏目时自动递增,页面加载数据视具体情况而定 |
| extend_fields | List<SysExtModelDetailesEntity> | 栏目使用扩展模型数据集合,可通过item.extend_fields.GetExtModelField("key","defaultvalue")获取数据 |
| pwd | varchar | 栏目访问密码 |
| down_list | text | 栏目文件 |
| review_status | ReViewStatusEnum | 审核状态:ReViewStatusEnum.UnReview待审核,ReViewStatusEnum.Pass审核通过,ReViewStatusEnum.UnPass审核不通过 |
| is_show | StatusEnum | 是否显示:StatusEnum.Legal 显示,StatusEnum.UnLegal不显示 |
| lucene_index | StatusEnum | 是否用于索引:StatusEnum.Legal 索引,StatusEnum.UnLegal不索引,*web有可访问的页面时才进行索引 |
| del_flag | DeleteEnum | 删除状态:DeleteEnum.UnDelete未删除,DeleteEnum.Delete已删除 |
| create_time | datetime | 创建时间 |
| 字段 | 类型 | 描述 |
|---|---|---|
| id | bigint | 主键ID,即内容ID |
| lang | varchar | 语种标识:tc,en,sc |
| lang_flag | int | 1此记录只用于当前 2表示此记录既用于繁体有用于简体(视具体需求而定) |
| node_id | bigint | 所属栏目ID |
| node_code | varchar | 所属栏目代号 |
| title | varchar | 内容标题 |
| link | varchar | 链接 |
| summary | text | 简介 |
| chr_content | longtext | 内容Html格式,页面绑定請:@Html.Raw(item.chr_content) |
| extend_fields | List<SysExtModelDetailesEntity> | 栏目使用扩展模型数据集合,可通过item.extend_fields.GetExtModelField("key","defaultvalue")获取数据 |
| cover | varchar | 内容封面图片 |
| atlas | text | 内容图集:多个用;分割 |
| n_sort | int | 排序号,增加默认递增,使用时视情况查询排序 |
| is_home | StatusEnum | 是否首页显示:StatusEnum.Legal首页显示,StatusEnum.UnLegal不首页显示 |
| is_top | StatusEnum | 是否置顶显示:StatusEnum.Legal置顶,StatusEnum.UnLegal不置顶 |
| is_node | StatusEnum | 是否栏目显示:StatusEnum.Legal栏目显示,StatusEnum.UnLegal不栏目显示 |
| view_count | int | 查看数,点击数在查看detail页面时会自动累加 |
| status | StatusEnum | 状态是否正常:StatusEnum.Legal正常,StatusEnum.UnLegal不正常 |
| review_status | ReViewStatusEnum | 审核状态:ReViewStatusEnum.UnReview待审核,ReViewStatusEnum.Pass审核通过,ReViewStatusEnum.UnPass审核不通过 |
| create_time | datetime | 创建时间 |
| creator | bigint | 创建记录的用户ID(后台) |
| creator_name | varchar | 创建记录的用户名称(后台) |
| tag | varchar | 标签 |
| author | varchar | 作者 |
| source | varchar | 来源 |
| del_flag | DeleteEnum | 删除状态:DeleteEnum.UnDelete未删除,DeleteEnum.Delete已删除 |
| down_file | varchar | 文件下载路径 |
| is_show | StatusEnum | 是否显示:StatusEnum.Legal显示,StatusEnum.UnLegal不显示 |
| publish_date | varchar | 发布时间 |
| 字段 | 类型 | 描述 |
|---|---|---|
| id | bigint | 主键ID,即文档ID |
| lang | varchar | 语种标识:tc,en,sc |
| lang_flag | int | 1此记录只用于当前 2表示此记录既用于繁体有用于简体(视具体需求而定) |
| module | varchar | 所属分类代号 |
| node_id | bigint | 所属栏目ID |
| node_code | varchar | 所属栏目代号 |
| name | varchar | 文档标题 |
| chr_desc | text | 文档说明 |
| chr_content | longtext | 文档内容HTML |
| img | varchar | 文档图片 |
| file_link | varchar | 文档文件 |
| link | varchar | 文档链接 |
| author | varchar | 作者 |
| source | varchar | 来源 |
| is_top | StatusEnum | 是否置顶:StatusEnum.Legal置顶,StatusEnum.UnLegal不置顶 |
| is_new | StatusEnum | 是否置新:StatusEnum.Legal置新,StatusEnum.UnLegal不置新 |
| is_login | StatusEnum | 是否需要登录:StatusEnum.Legal需要登录,StatusEnum.UnLegal不需要登录 |
| date | varchar | 发布日期 |
| create_id | bigint | 创建者ID |
| create_name | varchar | 创建者名称 |
| create_time | datetime | 创建时间 |
| n_sort | int | 排序号,默认会自动递增 |
| valid | StatusEnum | 是否有效:StatusEnum.Legal有效,StatusEnum.UnLegal无效 |
| is_show | StatusEnum | 是否显示:StatusEnum.Legal显示,StatusEnum.UnLegal不显示 |
首先顶部进行DI注入:
@using Microsoft.Extensions.Localization @inject IStringLocalizerFactory localizerFactory
实例化对象
@{
//创建实例
var _ = localizerFactory.Create(null);
}
使用
@_["JSON文件中的Key"]
首先顶部进行DI注入:
@inject ChinaSky.CMS.Net.Services.ISiteNodeService CMSNode
查询所有级别的栏目*注意返回的所有级别栏目其字段比较特殊
@{
//初始化查询条件集合
var condtions = new List<.Linq.Expressions.Expression<Func<ChinaSky.CMS.Net.Models.site_node, bool>>>();
//获取当前语种
var lang = ViewData["lang"].MyToString();
//添加匿名条件函数到集合中
condtions.Add((a) => a.show_menu == StatusEnum.Legal && a.show_path == StatusEnum.Legal && a.review_status == ReViewStatusEnum.Pass);
//添加匿名条件函数到集合中
condtions.Add((a) => (a.lang == lang));
//查询所有级别栏目
var all_level = CMSNode.GetAllLevelData(condtions);
}
根据栏目ID查询栏目
@{
var node_id=要查询的栏目ID;
//定义匿名条件函数,实例重点查询父级,其他条件自己根据实际情况而定
System.Linq.Expressions.Expression<Func<site_node, bool>> node_condution = a =>a.lang==lang&&a.id==node_id;
//查询父级栏目
var node_data = CMSNode.GetByOne(node_condution);
}
根据栏目代号查询栏目
@{
var node_code="要查询的栏目代号";
//定义匿名条件函数,实例重点查询父级,其他条件自己根据实际情况而定
System.Linq.Expressions.Expression<Func<site_node, bool>> node_condution = a =>a.lang==lang&&a.node_code==node_code;
//查询父级栏目
var node_data = CMSNode.GetByOne(node_condution);
}
查询父级栏目
@{
//获取当前栏目
site_node current_node = ViewData["node_info"] as site_node;
//定义匿名条件函数,实例重点查询父级,其他条件自己根据实际情况而定
System.Linq.Expressions.Expression<Func<site_node, bool>> parent_node_condution = a =>a.lang==lang&&a.id==current_node.parent_node;
//查询父级栏目
var parent_node = CMSNode.GetByOne(parent_node_condution);
}
查询直属子栏目
@{
//初始化查询条件集合
var condtions = new List<.Linq.Expressions.Expression<Func<ChinaSky.CMS.Net.Models.site_node, bool>>
//获取当前栏目
site_node current_node = ViewData["node_info"] as site_node;
//定义匿名条件函数,实例重点查询父级,其他条件自己根据实际情况而定
condtions.Add( a =>a.lang==lang&&a.parent_node==current_node.id);
//查询子级栏目
var children_node_list = CMSNode.GetList(condtions);
}
查询所有子栏目
@{
var all_children = CMSNode.GetPathChildNodes(current_node.node_code,lang);
}
首先顶部进行DI注入:
@inject ChinaSky.CMS.Net.Services.ISiteContentService CMSContent
根据栏目代号查询一条类容
@{
//创建匿名条件函数
System.Linq.Expressions.Expression<<site_content, bool>> content_one_condition = (a) =>a.lang == lang&& a.node_code == "栏目代号"&& a.review_status == ReViewStatusEnum.Pass;
//排序非常重要,会根据此条件取排序后的第一条,如果可预见此条件下只有一条数据可忽略排序
var content_one = CMSContent.GetByOne("n_sort asc", content_one_condition);
}
查询栏目下内容列表
@{
//匿名条件函数集合
var conditions = new List<System.Linq.Expressions.Expression<Func<site_content, bool>>>();
//条件只是演示,具体需要审核条件可自己根据实际情况而定
conditions.Add((a) => (a.lang == lang) && a.node_code == "栏目代号" && a.review_status == ReViewStatusEnum.Pass&&a.is_show==StatusEnum.Legal);
var content_list = CMSContent.GetList("n_sort asc,publish_date desc", conditions);
}
查询栏目内容分页列表
@{
//获取当前页面的页码
var page = Convert.ToInt32(string.Concat(ViewData["page"], ""));
//定义页大小
int page_size=10;
//定义总记录数
int total_record = 0;
//匿名条件函数集合
var conditions = new List<System.Linq.Expressions.Expression<Func<site_content, bool>>>();
//条件只是演示,具体需要审核条件可自己根据实际情况而定
conditions.Add((a) => (a.lang == lang) && a.node_code == "栏目代号" && a.review_status == ReViewStatusEnum.Pass&&a.is_show==StatusEnum.Legal);
var content_page_list = CMSContent.GetPageList(page, page_size, "n_sort desc,publish_date desc,create_time desc", conditions);
//返回的content_page_list格式如下:
{
List<site_content> list site_content 集合
Total 总记录数
PageIndex 当前页码
PageSize 页大小
PageCount 页数
}
//可配合分页组件生成分页的html元素
@await Component.InvokeAsync("CMSPagination", new { UrlFomart = "/{lang}/栏目代号/list/{0}", PageSize = page_size, IPage = page, Total = content_page_list.Total })
}
首先顶部进行DI注入:
@inject ChinaSky.CMS.Net.Services.ISiteDocService SiteDoc
根据栏目代号查询一条类容
@{
//创建匿名条件函数
System.Linq.Expressions.Expression<<site_doc, bool>> doc_one_condition = (a) =>a.lang == lang&& a.node_code == "栏目代号"&&a.module=="文档分类代号"&& a.is_show == StatusEnum.Legal;
//排序非常重要,会根据此条件取排序后的第一条,如果可预见此条件下只有一条数据可忽略排序
var codoc_one = SiteDoc.GetByOne("n_sort asc", doc_one_condition);
}
查询栏目下文档列表
@{
//匿名条件函数集合
var conditions = new List<System.Linq.Expressions.Expression<Func<site_doc, bool>>>();
//条件只是演示,具体需要审核条件可自己根据实际情况而定
conditions.Add((a) =>a.lang == lang&& a.node_code == "栏目代号"&&a.module=="文档分类代号"&& a.is_show == StatusEnum.Legal);
var doc_list = SiteDoc.GetList("n_sort asc,date desc", conditions);
}
查询栏目内容分页列表
@{
//获取当前页面的页码
var page = Convert.ToInt32(string.Concat(ViewData["page"], ""));
//定义页大小
int page_size=10;
//定义总记录数
int total_record = 0;
//匿名条件函数集合
var conditions = new List<System.Linq.Expressions.Expression<Func<site_doc, bool>>>();
//条件只是演示,具体需要审核条件可自己根据实际情况而定
conditions.Add((a) =>a.lang == lang&& a.node_code == "栏目代号"&&a.module=="文档分类代号"&& a.is_show == StatusEnum.Legal);
var doc_page_list = SiteDoc.GetPageList(page, page_size, "n_sort desc,date desc,create_time desc", conditions);
//返回的doc_page_list格式如下:
{
List<site_doc> list site_doc 集合
Total 总记录数
PageIndex 当前页码
PageSize 页大小
PageCount 页数
}
//可配合分页组件生成分页的html元素
@await Component.InvokeAsync("CMSPagination", new { UrlFomart = "/{lang}/栏目代号/list/{0}", PageSize = page_size, IPage = page, Total = doc_page_list.Total })
}
首先顶部进行DI注入:
@inject ChinaSky.CMS.Net.Setting.IApplicationSettingService AppSite
根据栏目代号查询一条类容
@{
//根据Key获取站点配置
string ValueOfKey = AppSite.Get("Key", "DefautValue");
//可使用的Key包括
en_SiteName 英文站点名称
Favicon 站点Fovicon
Logo 站点Logo
OuterChainPicture 图片是否允许同域外链
sc_SiteName 简体站点名称
SiteMetaKeywords 站点Meta关键字
tc_SiteName 繁体站点名称
}
//顶部注入
@inject ChinaSky.CMS.Net.Services.ISiteOtherService site_other
//获取站点附加类容
@{
var index_notice = site_other.GetContentByCode("附加类容代号", lang, StatusEnum.Legal);
}
//获取当前页面所属栏目信息
@{
site_node current_node = ViewData["node_info"] as site_node;
}
//获取当前语种
@{
var lang = ViewData["lang"].MyToString() == "" ? "sc" : ViewData["lang"].MyToString();
}
//获取请求路径
@{
var req_path = ViewData["req_path"].MyToString();
}
//清除Html标签
@ClearHTML(content.chr_content)
//格式化时间
@FormatDate("2020-06-12", "yyyy.MM.dd")
//截取字符串
@Sub("要截取的字符串", 开始位置,截取长度)
//截取html内容此函数会预先清理html标签再截取
@SubHtml("要截取的字符串", 开始位置,截取长度)
//生成分页
@await Component.InvokeAsync("CMSPagination", new { UrlFomart = "news/list/{0}", PageSize = 20, IPage = 5, Total = 500 })
//转义Html进行页面绑定
@Html.Raw(content.chr_content)