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

我们想要操作kentico网站的content(如下图),操作步骤如下。

一、引入kentico相关的dll文件,配置数据库链接环境

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

接下来就是需要在配置数据库连接,在app.config中添加配置代码如下:

 <connectionStrings>
<add name="CMSConnectionString" connectionString="Persist Security Info=False;database=expert_fi_7;server=.\SQLEXPRESS;user id=sa;password=******;Current Language=English;Connection Timeout=240;" />
</connectionStrings>

该配置连接的name必须为CMSConnectionString,这样才能有cms类库自动的识别。

二、初始化kentico CMS环境

引入命名空间:using CMS.CMSHelper

在需要使用content操作的代码前加上

 CMSContext.Init();

三、操作content节点

对节点的操作无非就是增、删、改、查这几种操作,下面一一介绍

  • 查询操作

     TreeProvider tree = new TreeProvider(CMSContext.CurrentUser);//获取当前content树对象
    
      var node = tree.SelectSingleNode(CMSContext.CurrentSiteName
    , "/Tuotteet" //该处为Alias path,见下图
    , "en-us",true); //获取节点Tuotteet value = node.GetValue(columnNames["propertyName"]).ToString(); //获取某一属性值
    //【注】该node不能直接用node.Children去获取,node.Children获取的只是最基本的信息 //获取指定节点所有属性名
    DataClassInfo dci = DataClassInfoProvider.GetDataClass(node.NodeClassName);
    var columnNames=new List<string>(); //创建属性名对象
    if (dci != null)
    {
    CMS.FormEngine.FormInfo fi = new CMS.FormEngine.FormInfo(dci.ClassFormDefinition);
    columnNames = fi.GetColumnNames();
    } //获取所有子节点
    var childrenNodes=node.Children

    如果你想获取所有子节点的属性,你可以遍历childrenNodes,然后使用SelectSingleNode(……)的方法去获取指定子节点的对象,然后去获取它的属性。
    对于上面提到的Alias path,见下图示例:

  • 添加节点
             public void AddNode(string nodeAliasPath,List<string[]> categorys )
    {
    var parentNodeAliasPath = nodeAliasPath.Substring(, nodeAliasPath.LastIndexOf('/'));
    var tree = new TreeProvider(CMSContext.CurrentUser);
    var parentNode = tree.SelectSingleNode(CMSContext.CurrentSiteName, parentNodeAliasPath, "fi-FI", true);
    var className = categorys[][];
    TreeNode newNode = TreeNode.New(className, tree);
    newNode.DocumentName = categorys[][];//设置节点名
    newNode.DocumentCulture = "fi-FI";//设置节点的document环境
    for (int i = ; i < categorys[].Length - ; i++)
    {
    newNode.SetValue(categorys[][i], categorys[][i]);//为节点添加新的属性,SetValue(属性名,值)
    }
    DocumentHelper.InsertDocument(newNode, parentNode, tree);
    }

    这里要注意的是必须给节点新节点添加属性,不然该节点在添加后不会显示出来

  • 删除节点
             public void DeleteNode(string nodeAliasPath)
    {
    var tree = new TreeProvider(CMSContext.CurrentUser);
    var deleteNode = tree.SelectSingleNode(CMSContext.CurrentSiteName, nodeAliasPath, "fi-FI", true);
    if (deleteNode != null)
    {
    DocumentHelper.DeleteDocument(deleteNode, tree, true, true, true);
    }
    }

    关于DeleteDocument的说明,如下图

  • 修改节点内容
             public void UpdateNode(string nodeAliasPath,List<string[]> categorys )
    {
    var tree = new TreeProvider(CMSContext.CurrentUser);
    var updateNode = tree.SelectSingleNode(CMSContext.CurrentSiteName, nodeAliasPath, "fi-FI", true);
    updateNode.DocumentName = categorys[][];
    for (int i = ; i < categorys[].Length-;i++ )
    {
    updateNode.SetValue(categorys[][i], categorys[][i]);
    }
    DocumentHelper.UpdateDocument(updateNode, tree);
    }

    当然,还有很多节点的属性你可以修改,例子代码没有列出来。

就以上的这些内容,基本可以去简单操作kentico cms中的content内容了,欢迎大家讨论。

参考:http://devnet.kentico.com/Documentation.aspx

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

C#操作Kentico cms 中的 content(winform环境)的更多相关文章

  1. C#操作Kentico cms

    C#操作Kentico cms 中的 content(winform环境) 前段时间做了个winform程序,去管理kentico网站的content,包括content节点的增删改查,以及相应节点内 ...

  2. 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Application Data 中的媒体

    [源码下载] 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Ap ...

  3. Sitecore CMS中删除项目

    如何删除项目以及如何在Sitecore CMS中恢复已删除的项目. 删除项目 有多种方便的方法可以删除Sitecore中的项目. 从功能区 在内容树中选择您要删除的项目. 单击功能区中“主页”选项卡的 ...

  4. Sitecore CMS中如何命名项目名称

    如何在Sitecore CMS中命名项目,以及配置命名限制,“显示名称”是什么以及如何使用它. 任何其他名称的项目 当创建Sitecore的项目,内容编辑器要求制作者为新建项目提供名称.输入的名称将其 ...

  5. 如何删除Sitecore CMS中的项目

    在此“如何”帖子中,我将介绍如何删除项目以及如何在Sitecore CMS中恢复已删除的项目. 删除项目 有多种方便的方法可以删除Sitecore中的项目. 从功能区 在内容树中选择您要删除的项目. ...

  6. Android开发---如何操作资源目录中的资源文件4 ---访问xml的配置资源文件的内容

    Android开发---如何操作资源目录中的资源文件4 XML,位于res/xml/,这些静态的XML文件用于保存程序的数据和结构. XmlPullParser可以用于解释xml文件 效果图: 描述: ...

  7. Android开发---如何操作资源目录中的资源文件3--圆角边框、背景颜色渐变效果、边框颜色

    Android开发---如何操作资源目录中的资源文件3 效果图 1.圆角边框 2.背景颜色渐变效果 1.activity_main.xml 描述: 定义了一个shape资源管理按钮 <?xml ...

  8. Android开发 ---如何操作资源目录中的资源文件2

    Android开发 ---如何操作资源目录中的资源文件2 一.颜色资源管理 效果图: 描述: 1.改变字体的背景颜色 2.改变字体颜色 3.改变按钮颜色 4.图像颜色切换 操作描述: 点击(1)中的颜 ...

  9. python操作txt文件中数据教程[1]-使用python读写txt文件

    python操作txt文件中数据教程[1]-使用python读写txt文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 原始txt文件 程序实现后结果 程序实现 filename = '. ...

随机推荐

  1. C++中public,protected,private访问

    对于公有继承方式: (1)父类的public成员成为子类的public成员,允许类以外的代码访问这些成员:(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员:(3 ...

  2. hdu 4893 Wow! Such Sequence!

    http://acm.hdu.edu.cn/showproblem.php?pid=4893 三种操作: 1 k d - "add" 2 l r - "query sum ...

  3. IOS数组排序等

    一.UITextField的代理方法 #pragma mark 当文本框开始编辑的时候调用---开始聚焦 - (void)textFieldDidBeginEditing:(UITextField * ...

  4. ExtJs--15--Ext.is*各种类型推断的方法,简单看源代码就能够明确了

    /** * Returns true if the passed value is empty, false otherwise. The value is deemed to be empty if ...

  5. windows系统下c语言暂停程序

    原文:windows系统下c语言暂停程序 windows系统下,很多C语言初学者的调试时,往往没看到结果程序就退出了,据我所知的方法主要有以下几种 方法一: #include int main() { ...

  6. grunt的基本概念和使用

    grunt的基本概念和使用 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版 ...

  7. 如何运行代码apk安装

    import java.io.File; import android.app.Activity; import android.content.Intent; import android.net. ...

  8. JavaScript继承基础讲解,原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承

    说好的讲解JavaScript继承,可是迟迟到现在讲解.废话不多说,直接进入正题. 既然你想了解继承,证明你对JavaScript面向对象已经有一定的了解,如还有什么不理解的可以参考<面向对象J ...

  9. [翻译]MEAN.IO与MEAN.JS的前世今生

    写在前面: 因为项目要求要学习mean,所以要从搭建环境开始,网上的教程不怎么多,但是感觉方法倒是不少,也没多想,就开始安装,运行起来发现怎么和安装教程中的目录结构不同? 想了好久,也翻看目录半天,总 ...

  10. Python 2.7 Exception格式化工具

    首先说一个发现: try: 抛错误,抛异常 except Exception as e: 都被这里抓住了 except Error as e: 这里啥事都没了 然后,说说Exception as e的 ...