前段时间做了个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. SSAS系列——【03】多维数据(多维数据集对象)

    原文:SSAS系列--[03]多维数据(多维数据集对象) 1.什么是Cube? 简单 Cube 对象由基本信息.维度和度量值组组成. 基本信息包括多维数据集的名称.多维数据集的默认度量值.数据源和存储 ...

  2. Swift入门教程:基本语法(五)

    断言 断言是一种实时检测条件是否为true的方法 如果条件为true,那么代码继续执行 如果条件为false,就抛出错误信息,直接终止程序的运行   断言的用法 使用全局的assert函数 passe ...

  3. Highcharts图表导出为pdf的JavaWeb实践

    写给读者的话^_^: 众所周知,基于Highcharts插件生成的svg图片组(注意这里鄙人指的组是若干图有序组合,并非一张图片,具有业务意义)导出为PDF文档是有难度滴.鄙人也曾“异想天开”用前端技 ...

  4. ASP.NET MVC基于标注特性的Model验证:将ValidationAttribute应用到参数上

    原文:ASP.NET MVC基于标注特性的Model验证:将ValidationAttribute应用到参数上 ASP.NET MVC默认采用基于标准特性的Model验证机制,但是只有应用在Model ...

  5. C语言得到当前系统时间

    void getTime(){ //获取当前系统时间 time_t tTime;//距离1900年1月1日的秒数 char str[80]; struct tm* stTim;//时间结构 time( ...

  6. C++ ofstream和ifstream具体的方法和C语言file说明

    ofstream是从内存到硬盘,ifstream是从硬盘到内存,事实上所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,全部的I/O都以这个"流"类为基础的,包含我 ...

  7. UiAutomator源码分析之注入事件

    上一篇文章<UiAutomator源码分析之UiAutomatorBridge框架>中我们把UiAutomatorBridge以及它相关的类进行的描述,往下我们会尝试根据两个实例将这些类给 ...

  8. 如何查看IC卡燃气表读数和剩余量?

    如今新建的楼房都是使用IC卡燃气表,拿到房子入住时也没有见到IC卡燃气表的使用说明书.非常多人可能为此而苦恼.这里就讲一下怎样查看IC卡燃气表读数及剩余金额. 产品外观 可选功能 watermark/ ...

  9. mvc拦截器

    在ASP.NET MVC中,有三种拦截器:Action拦截器.Result拦截器和Exception拦截器.这里说的是第一种和第三种.其实所谓的ASP.NET MVC拦截器,也没什么神秘的,就是一个普 ...

  10. QT最简单的程序执行过程分析(内含C++基础知识)

    打开QT Creator,新建一个“应用程序-Qt Widgets Application”项目: 输入名称scdc之后点击下一步. 在“构建套件”这个页面中直接点出下一步,然后再输入自己的类名Dat ...