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

珍惜作者劳动成果,如须转载,请说明出处。

 
 
标签: kentico cmscontent

C#操作Kentico cms的更多相关文章

  1. C#操作Kentico cms 中的 content(winform环境)

    前段时间做了个winform程序,去管理kentico网站的content,包括content节点的增删改查,以及相应节点内容的修改.现在将对content的操作方法简单的介绍一下. 我们想要操作ke ...

  2. 最受欢迎的ASP.NET的CMS下载

    1. Umbraco 项目地址 下载 Umbraco是一个开放源码的CMS内容管理系统,基于asp.net建立,使用mssql进行存储数据.使用Umbraco,设计师能创造出有效的XHTML标记模板和 ...

  3. ASP.NET的CMS

    最受欢迎的ASP.NET的CMS下载 1. Umbraco 项目地址 | 下载 Umbraco是一个开放源码的CMS内容管理系统,基于asp.net建立,使用mssql进行存储数据. 使用Umbrac ...

  4. 《转》最受欢迎的ASP.NET的CMS下载

    1. Umbraco 项目地址 | 下载 Umbraco是一个开放源码的CMS内容管理系统,基于asp.net建立,使用mssql进行存储数据. 使用Umbraco ,设计师能创造出有效的XHTML标 ...

  5. 《转》适用于开发人员的10个最佳ASP.NET的CMS系统

    1) mojoportal mojoPortal 是一个开源的.用 C# 编写的站点框架和内容管理系统,可以运行在 Windows 中的 ASP.NET 和 Linux/Mac OS X 中的 Mon ...

  6. PHP 关于文件操作的简单介绍

    文件操作一直是Web程序员头疼的地方,而文件操作在CMS这样的系统中又是必须的.如今,PHP文件操作的函数内容已经非常强大,文件这部分也是学习PHP非常重要的一部分,希望大家不要忽略.这篇文章会简单介 ...

  7. CMS垃圾回收机制

    详解CMS垃圾回收机制   原创不易,未经允许,不得转载~~~ 什么是CMS? Concurrent Mark Sweep. 看名字就知道,CMS是一款并发.使用标记-清除算法的gc. CMS是针对老 ...

  8. 详解CMS垃圾回收机制

    原创不易,未经允许,不得转载~~~ 什么是CMS? Concurrent Mark Sweep. 看名字就知道,CMS是一款并发.使用标记-清除算法的gc. CMS是针对老年代进行回收的GC. CMS ...

  9. [复现]蝉知cms 5.6 前台注入

    https://share.weiyun.com/5cbff06337d32a9748d0f1bead5ddbd5 前台注入 在/chanzhieps/system/module/cart/contr ...

随机推荐

  1. UVA - 817 According to Bartjens

    Description  According to Bartjens  The wide dissemination of calculators and computers has itsdisad ...

  2. Android checkCallingPermission()方法返回值问题

    Android开发检查权限时,发现调用checkCallingPermission()总是返回值-1,而Binder.getCallingPid() == Process.myPid()又总是返回tr ...

  3. lambda 表达式 自定义查询

    遇到 这样的 问题 常用 EF . 实现  like 用 Contains("asd")  搞定 他生成的是 %asd% . 如果 我希望 生成  asd%,怎么搞呢? Start ...

  4. SSAS系列——【05】多维数据(编程体系结构)

    原文:SSAS系列--[05]多维数据(编程体系结构) 1.什么是AMO? 翻译:AMO是SSAS中一个完整的管理类集合,它在Microsoft.AnalysisServices命名空间下,我们可以在 ...

  5. IOS启动其他应用程序

    从app1打开app2.主要的思路就是,能够为app2定义一个URL,在app1中通过打开这个URL来打开app2,在此过程中.能够传送一些參数. 在app1的代码中打开刚才定义的URL.代码例如以下 ...

  6. Hadoop群集设置

    Hadoop群集设置 近期特别看了Hadoop的资料.感觉特别好,整理一下发在自己的博客上,希望对想了解集群的网友有所帮助. 參考资料:http://hadoop.apache.org/docs/r1 ...

  7. JS实现倒计时网页自动跳转(如404页面经常使用到的)

    在web前端设计中,我们经常会遇到需要实现页面倒计时跳转的功能,例如在404页面中也会经常使用到此功能,那么如何实现呢,其实实现方法很简单,实现代码如下:<title>JS倒计时网页自动跳 ...

  8. C# 实现 Hyper-V 虚拟机 管理

    原文:C# 实现 Hyper-V 虚拟机 管理 Hyper-V WMI Provider 工具类如下: "; break; } return status; } } /// <summ ...

  9. MAC中在eclipse luna上搭建移动平台自动化测试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录

    这几天因为原来在用的hp laptop的电池坏掉了,机器一不小心就断电,所以只能花时间在自己的macbook pro上重新搭建整套环境,大家都知道搭建环境是个很琐碎需要耐心的事情,特别是当你搭建的安卓 ...

  10. 个人学习JQ插件编写成果:little酷炫的图片滑动切换效果

    工作一个多月了,好久没来冒冒泡了,看了@wayong的JQ插件教程,自己编写了一个模仿拉勾网首页广告栏滑动特效的JQ插件,现在跟朋友们分享分享! 先上demo链接:http://runjs.cn/de ...