none
如何在Sharepoint Wiki 中用对象模型去添加new wiki page! RRS feed

  • 问题

  • String personalSite = WebUrl + "/personal/" + Environment.UserName;
    
    using (SPSite spsite = new SPSite(personalSite))
    
                {
    
                    using (SPWeb spweb = spsite.RootWeb)
    
                    {
    
                        spweb.AllowUnsafeUpdates = true;
    
                        SPFolder folder = spweb.GetFolder(wikimodel.PerentTitle);
    
                        if (folder.Exists) 
    
                        {
    
                        }
    
                        SPListItemCollection spItems = spweb.Lists[wikiName].Items;
    
                        SPListItem item = spItems.Add();
    
                        item["Name"] = wikimodel.Name;
    
                        item["Wiki Content"] = wikimodel.WikiContent;
    
                        item.Update();
    
                        return true;
    
                    }
    
                }
    
    
    
    
    我使用这种方式是不可以的,无法创建wiki page!
    2010年2月4日 3:18

答案

  • 因为 Wiki 实际上是 Doc Lib 而不是简单的 List,经尝试,你可以用代码修改满足你的要求,注意加粗代码:

            SPWeb web = SPContext.Current.Web;
            SPList wikiList = web.Lists["HeroWiki01"];
            SPFolder wikiRootFolder = wikiList.RootFolder;       
            SPFile wikiPage = wikiRootFolder.Files.Add(wikiList.RootFolder.Url + "/" + txtTitle.Text + ".aspx", SPTemplateFileType.WikiPage);
            SPListItem wikiItem = wikiPage.Item;
            wikiItem[SPBuiltInFieldId.WikiField] = txtBody.Text;
            wikiItem.Update();


    see my blog: 如何编程创建 Wiki 库

    Hope Helpful | Xiaofeng Wang | http://www.leoworks.net
    2010年2月4日 8:54
    版主

全部回复

  • 报什么错? wikimodel 是你自己的对象?你确定 personalSite 这个 url 是正确的?当前用户有权限操作这个 My Site 的 Wiki 吗?


    Hope Helpful | Xiaofeng Wang | http://www.leoworks.net
    2010年2月4日 6:29
    版主
  • public static Boolean AddWikiItem()
    {
                try
                {
                    String personalSiteUrl = url + "/personal/" + Environment.UserName;
                    using (SPSite spsite = new SPSite(personalSiteUrl))
                    {
                         using (SPWeb spweb = spsite.RootWeb)
                        {
                            spweb.AllowUnsafeUpdates = true;
                            SPListItemCollection spItems = spweb.Lists["NexocialWiki"].Items;
                            SPListItem item = spItems.Add();
                            item["Name"] = "write a new wiki";
                            item["Wiki Content"] = "welcome to nexocial";
                            item.Update();
                            return true;
                        }
                    }
                }
                catch 
                {
                    return false;
                }
    }


    personalSiteUrl 这个地址是正确的! 当前用户就是系统用户,就是system account!
    报的异常是:
    To add an item to a document library, use SPFileCollection.Add()

    2010年2月4日 7:40
  • 因为 Wiki 实际上是 Doc Lib 而不是简单的 List,经尝试,你可以用代码修改满足你的要求,注意加粗代码:

            SPWeb web = SPContext.Current.Web;
            SPList wikiList = web.Lists["HeroWiki01"];
            SPFolder wikiRootFolder = wikiList.RootFolder;       
            SPFile wikiPage = wikiRootFolder.Files.Add(wikiList.RootFolder.Url + "/" + txtTitle.Text + ".aspx", SPTemplateFileType.WikiPage);
            SPListItem wikiItem = wikiPage.Item;
            wikiItem[SPBuiltInFieldId.WikiField] = txtBody.Text;
            wikiItem.Update();


    see my blog: 如何编程创建 Wiki 库

    Hope Helpful | Xiaofeng Wang | http://www.leoworks.net
    2010年2月4日 8:54
    版主
  • 谢谢您的帮助!

    2010年2月4日 9:36
  • Microsoft.SharePoint.Utilities.SPUtility中有一个SPUtility。CreateNewWikiPage(SPList wikiList, string url)方法,可以直接创建一个wikipage的SPFile对象。

    2010年2月21日 2:42
  • Microsoft.SharePoint.Utilities.SPUtility中有一个SPUtility。CreateNewWikiPage(SPList wikiList, string url)方法,可以直接创建一个wikipage的SPFile对象。


    3.0 似乎没有这个方法
    Hope Helpful | Xiaofeng Wang | http://www.leoworks.net
    2010年2月26日 9:19
    版主