前段时间做了个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. 通信网Project之——单源单宿最短路问题

    最主要的Vertex类: #ifndef VERTEX_H #define VERTEX_H #include <climits> #include <cstddef> #de ...

  2. perconaXTRADB Cluster在Redhat Linux上的安装

    installing-perconaXTRADB Cluster 5.6 For Redhat 6.4 一.server版本号查看 Root# cat /etc/redhat-release Red ...

  3. Delphi三层网络架构代码实现

    Delphi三层网络架构代码实现 1 .三层网络的概念 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为: 表现层(UI).业务逻辑层(BLL).数据访 ...

  4. Swift编程语言学习4.1——周期

    Swift它提供了类似 C 流量控制结构语言,它包含运行多个任务的能力for和while周期.选择根据不同的编码分支机构的具体条件来运行if和switch声明,有控制流程跳转到其他代码break和co ...

  5. AngularJS + CoffeeScript

    AngularJS + CoffeeScript 前端开发环境配置详解 AngularJS 号称 '第一框架' ('The first framework') 确实是名不虚传.由其从jQuery中完全 ...

  6. codeforces #262 DIV2 C称号Present(二分法+贪婪)

    职务地址:http://codeforces.com/contest/460/problem/C 这个题是用二分枚举最小值.然后推断是否能在规定的次数内使得全部的数都达到这个值.推断的时候要用贪心的方 ...

  7. Python开发工具Wing IDE发布5.0.1版本

    Wing IDE是一个跨平台的Python IDE,提供了一个专业代码编辑.自动编辑.自动完成.重构.强大的图形调试器.版本控制.单位测试.搜索及其他功能.目前已经成为最全面.最综合.最先进的智能化P ...

  8. avalon.js实现一个简易日历

    使用MVVM框架avalon.js实现一个简易日历   最近在做公司内部的运营管理系统,因为与日历密切相关,同时无需触发条件直接显示在页面上,所以针对这样的功能场景,我就用avalon快速实现了一个简 ...

  9. J2EE总结(2)——Servlet/JSP

    Servlet/JSP Servlet定义:部署在java的Webserver上的组件.整个java服务端程序都构建在Servlet之上,以多线程方式提 供服务,具有效率高.可扩展,可移植的特点. J ...

  10. 从Http它被连接到WebSocket

    1.HTTP协议长期-fi支持和各支持的浏览器 http://blog.csdn.net/fenglibing/article/details/7100222 2.WEBclient与服务端信息交互的 ...