C#操作Kentico cms
C#操作Kentico cms 中的 content(winform环境)
前段时间做了个winform程序,去管理kentico网站的content,包括content节点的增删改查,以及相应节点内容的修改。现在将对content的操作方法简单的介绍一下。
我们想要操作kentico网站的content(如下图),操作步骤如下。

一、引入kentico相关的dll文件,配置数据库链接环境
不直接使用sql查询语句去操作,而是使用kentico cms的方法去直接操作,我们需要引入kentico cms系统中的dll文件,这些文件在kentico cms网站的/bin目录下面可以找到,就是一些前缀是CMS.的文件,如下图,下图只是一部分:

接下来就是需要在配置数据库连接,在app.config中添加配置代码如下:
1 <connectionStrings>
2 <add name="CMSConnectionString" connectionString="Persist Security Info=False;database=expert_fi_7;server=.\SQLEXPRESS;user id=sa;password=******;Current Language=English;Connection Timeout=240;" />
3 </connectionStrings>
该配置连接的name必须为CMSConnectionString,这样才能有cms类库自动的识别。
二、初始化kentico CMS环境
引入命名空间:using CMS.CMSHelper
在需要使用content操作的代码前加上
1 CMSContext.Init();
三、操作content节点
对节点的操作无非就是增、删、改、查这几种操作,下面一一介绍
- 查询操作

1 TreeProvider tree = new TreeProvider(CMSContext.CurrentUser);//获取当前content树对象
2
3 var node = tree.SelectSingleNode(CMSContext.CurrentSiteName
4 , "/Tuotteet" //该处为Alias path,见下图
5 , "en-us",true); //获取节点Tuotteet
6
7 value = node.GetValue(columnNames["propertyName"]).ToString(); //获取某一属性值
8 //【注】该node不能直接用node.Children去获取,node.Children获取的只是最基本的信息
9
10 //获取指定节点所有属性名
11 DataClassInfo dci = DataClassInfoProvider.GetDataClass(node.NodeClassName);
12 var columnNames=new List<string>(); //创建属性名对象
13 if (dci != null)
14 {
15 CMS.FormEngine.FormInfo fi = new CMS.FormEngine.FormInfo(dci.ClassFormDefinition);
16 columnNames = fi.GetColumnNames();
17 }
18
19 //获取所有子节点
20 var childrenNodes=node.Children
如果你想获取所有子节点的属性,你可以遍历childrenNodes,然后使用SelectSingleNode(……)的方法去获取指定子节点的对象,然后去获取它的属性。
对于上面提到的Alias path,见下图示例:
- 添加节点

1 public void AddNode(string nodeAliasPath,List<string[]> categorys )
2 {
3 var parentNodeAliasPath = nodeAliasPath.Substring(0, nodeAliasPath.LastIndexOf('/'));
4 var tree = new TreeProvider(CMSContext.CurrentUser);
5 var parentNode = tree.SelectSingleNode(CMSContext.CurrentSiteName, parentNodeAliasPath, "fi-FI", true);
6 var className = categorys[1][1];
7 TreeNode newNode = TreeNode.New(className, tree);
8 newNode.DocumentName = categorys[1][0];//设置节点名
9 newNode.DocumentCulture = "fi-FI";//设置节点的document环境
10 for (int i = 2; i < categorys[0].Length - 2; i++)
11 {
12 newNode.SetValue(categorys[0][i], categorys[1][i]);//为节点添加新的属性,SetValue(属性名,值)
13 }
14 DocumentHelper.InsertDocument(newNode, parentNode, tree);
15 }
这里要注意的是必须给节点新节点添加属性,不然该节点在添加后不会显示出来
- 删除节点

1 public void DeleteNode(string nodeAliasPath)
2 {
3 var tree = new TreeProvider(CMSContext.CurrentUser);
4 var deleteNode = tree.SelectSingleNode(CMSContext.CurrentSiteName, nodeAliasPath, "fi-FI", true);
5 if (deleteNode != null)
6 {
7 DocumentHelper.DeleteDocument(deleteNode, tree, true, true, true);
8 }
9 }
关于DeleteDocument的说明,如下图

- 修改节点内容

1 public void UpdateNode(string nodeAliasPath,List<string[]> categorys )
2 {
3 var tree = new TreeProvider(CMSContext.CurrentUser);
4 var updateNode = tree.SelectSingleNode(CMSContext.CurrentSiteName, nodeAliasPath, "fi-FI", true);
5 updateNode.DocumentName = categorys[1][0];
6 for (int i = 1; i < categorys[0].Length-1;i++ )
7 {
8 updateNode.SetValue(categorys[0][i], categorys[1][i]);
9 }
10 DocumentHelper.UpdateDocument(updateNode, tree);
11 }
当然,还有很多节点的属性你可以修改,例子代码没有列出来。
就以上的这些内容,基本可以去简单操作kentico cms中的content内容了,欢迎大家讨论。
参考:http://devnet.kentico.com/Documentation.aspx
珍惜作者劳动成果,如须转载,请说明出处。
C#操作Kentico cms的更多相关文章
- C#操作Kentico cms 中的 content(winform环境)
前段时间做了个winform程序,去管理kentico网站的content,包括content节点的增删改查,以及相应节点内容的修改.现在将对content的操作方法简单的介绍一下. 我们想要操作ke ...
- 最受欢迎的ASP.NET的CMS下载
1. Umbraco 项目地址 下载 Umbraco是一个开放源码的CMS内容管理系统,基于asp.net建立,使用mssql进行存储数据.使用Umbraco,设计师能创造出有效的XHTML标记模板和 ...
- ASP.NET的CMS
最受欢迎的ASP.NET的CMS下载 1. Umbraco 项目地址 | 下载 Umbraco是一个开放源码的CMS内容管理系统,基于asp.net建立,使用mssql进行存储数据. 使用Umbrac ...
- 《转》最受欢迎的ASP.NET的CMS下载
1. Umbraco 项目地址 | 下载 Umbraco是一个开放源码的CMS内容管理系统,基于asp.net建立,使用mssql进行存储数据. 使用Umbraco ,设计师能创造出有效的XHTML标 ...
- 《转》适用于开发人员的10个最佳ASP.NET的CMS系统
1) mojoportal mojoPortal 是一个开源的.用 C# 编写的站点框架和内容管理系统,可以运行在 Windows 中的 ASP.NET 和 Linux/Mac OS X 中的 Mon ...
- PHP 关于文件操作的简单介绍
文件操作一直是Web程序员头疼的地方,而文件操作在CMS这样的系统中又是必须的.如今,PHP文件操作的函数内容已经非常强大,文件这部分也是学习PHP非常重要的一部分,希望大家不要忽略.这篇文章会简单介 ...
- CMS垃圾回收机制
详解CMS垃圾回收机制 原创不易,未经允许,不得转载~~~ 什么是CMS? Concurrent Mark Sweep. 看名字就知道,CMS是一款并发.使用标记-清除算法的gc. CMS是针对老 ...
- 详解CMS垃圾回收机制
原创不易,未经允许,不得转载~~~ 什么是CMS? Concurrent Mark Sweep. 看名字就知道,CMS是一款并发.使用标记-清除算法的gc. CMS是针对老年代进行回收的GC. CMS ...
- [复现]蝉知cms 5.6 前台注入
https://share.weiyun.com/5cbff06337d32a9748d0f1bead5ddbd5 前台注入 在/chanzhieps/system/module/cart/contr ...
随机推荐
- android意图传递参数返回结果(六)
例如,有两页a,b. a参数传递到页面b页面,b后,将获得的参数的处理页,然后将结果传回与参数的页面a. 1.a主页MainActivity的代码类型,如以下: private Button butt ...
- asp.net读取CSV
原文:asp.net读取CSV 用Excel导了两天数据,各种问题,折磨客户也折磨了自己,以前没发现的问题一下子都暴露出来了 特意收集两篇Excel跟CSV读取相关的两篇文章 asp.net读取exc ...
- windows 7 下快速搭建php环境(windows7+IIS7+php+mysql)
原文:windows 7 下快速搭建php环境(windows7+IIS7+php+mysql) 1).采用理由: 优点:最大化的桌面图形化操作系统,可维护性优秀.基于IIS v6.0/v7.0(20 ...
- SQL Mon 介绍
原文:SQL Mon 介绍 这是一个相当高级的SQL Server监控工具,全面监控SQL Server的活动与性能,分析性能瓶颈,给出优化建议. red-gate有一个在线的数据库监控工具,不过那个 ...
- 【蜗牛—漫漫IT路之大学篇(九)
】
再来一篇叨叨的博客 近期,状态还是那个状态,人还是那个人. 前两天,感冒了,可能是宿舍阴面的事吧.然后,中午睡觉的时候穿着短袖披了一件外套,然后鼻子就不通气了.只是,前天晚上,我骑着崔国强的车子跑了不 ...
- 处理动态SQL语句的参数
原文:处理动态SQL语句的参数 经常对SQL进行开发,写动态的SQL语句,是少之不了的,但是在使用动态语句中,常是因为有动态的参数的出现.参考下面代码示例: 正因为有了标记1的动态条件代码,而让SQL ...
- 31、Thinking in Java
- sqlclr返回数据集案例
----------------------------------------------返回一张表,但只有一条数据,最后一次设置的. [Microsoft.SqlServer.Server.Sql ...
- Android高效开发环境(Genymotion,Gradle,Andriod Studio)
临近十一,项目接近上线,终于有些碎片时间可以查看一些博客. 这篇博客是Android开发大牛Cyril Mottier在去年写的博客,我把它翻译一下共享给国内志同道合的朋友,同时也是对自己一个很好的锻 ...
- 登陆页面改为SSO验证
登陆页面改为SSO验证 单点登录(SSO,single sign-on)是一个会话或用户身份验证过程,用户只需要登录一次就可以访问所有相互信任的应用系统,二次登录时无需重新输入用户名和密码.简化账号登 ...