c# - 如何以编程方式在企业 Wiki 站点的页面库中创建可编辑的 Wiki 页面

标签 c# sharepoint sharepoint-2010 sharepoint-api

我是 SharePoint 新手。我正在尝试以编程方式在 SharePoint 2010 中企业 Wiki 站点的页面库中创建一个 Wiki 页面。这是我的代码:

using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
        SPWeb rootWeb = site.RootWeb;
        rootWeb.AllowUnsafeUpdates = true;
        SPList wiki = rootWeb.Lists["Pages"];
        SPFolder rootFolder = wiki.RootFolder;
        SPFile wikiPage = rootFolder.Files.Add(String.Format("{0}/{1}", rootFolder.ServerRelativeUrl, "MyWikiPage.aspx"), SPTemplateFileType.WikiPage);
        SPListItem wikiItem = wikiPage.Item;
        wikiItem["PublishingPageContent"] = "my demo content";
        wikiItem.UpdateOverwriteVersion();
        rootWeb.AllowUnsafeUpdates = false;
}

页面已创建,但问题是创建的页面不可编辑且未插入演示内容。在编辑模式下打开时,没有可用的内容空间并且编辑选项显示为灰色。

我也试过像这样设置默认内容:

    wikiItem[SPBuiltInFieldId.WikiField] = "my demo content";

但这会给出无效字段错误。

我也试过用这行代码创建页面:

    SPFile wikiPage = SPUtility.CreateNewWikiPage(wiki, String.Format("{0}/{1}", rootFolder.ServerRelativeUrl, "MyWikiPage.aspx"));

但结果完全一样。

我已确认已为网站启用“SharePoint Server 发布”功能,并且已为网站集启用“SharePoint Server 发布基础结构”功能。

请帮忙。

最佳答案

在我在 sharepoint.stackexchange.com 上的其他帖子的帮助下,我想出了这个解决方案:

我们需要创建一个新的发布页面并相应地更新内容类型属性,而不是使用常规的 wiki 操作例程来定位页面库。

为了其他人的利益,这里是对我有用的代码:

using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
    SPWeb rootWeb = site.RootWeb;
    rootWeb.AllowUnsafeUpdates = true;
    SPList wiki = rootWeb.Lists["Pages"];
    String url = wiki.RootFolder.ServerRelativeUrl.ToString();
    PublishingSite pubSite = new PublishingSite(rootWeb.Site);
    string pageLayoutName = "EnterpriseWiki.aspx"; //Page Layout Name
    string layoutURL = rootWeb.Url + "/_catalogs/masterpage/" + pageLayoutName;
    PageLayout layout = pubSite.PageLayouts[layoutURL];
    PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(rootWeb);
    PublishingPage newWikiPage;
    string myWikiPage = "MyWikiPage.aspx"; //Page name
    newWikiPage = publishingWeb.GetPublishingPages().Add(myWikiPage, layout);
    newWikiPage.Title = "My Wiki Page";
    newWikiPage.Update();
    rootWeb.AllowUnsafeUpdates = false;
}

关于c# - 如何以编程方式在企业 Wiki 站点的页面库中创建可编辑的 Wiki 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13143353/

相关文章:

asp.net - Sharepoint WebPart 中 Silverlight 控件的客户端 ID

powershell - 为什么这个 powershell for 循环在 4 次迭代后停止

sharepoint - 如何将 SharePoint 2010 项目从沙盒解决方案更改为场解决方案

java - 在 Saucelabs 中使用 Selenium 远程 Firefox Webdriver 安装扩展时出现问题

c# - 错误sqlcommand.ExecuteNonQuery()

c# - 从网站获取 "real"HTML 源

sharepoint - 子类化 SharePoint 对象

SharePoint 2010 工作流突然不起作用

html - 将搜索下拉菜单移动到 Sharepoint 2010 中的搜索输入框上方

c# - 写入然后从 MemoryStream 读取