使用SharePoint 2007中的C#以编程方式创建页面

时间:2011-11-01 17:15:16

标签: c# sharepoint sharepoint-2007 moss

不确定是否有人问这个问题,但是搜索还没有完全找到我正在寻找的东西。我已经有了页面布局,我需要做的是以编程方式在Pages库中创建一个页面。

我对细节很模糊,但不知怎的,我想我需要打开布局,然后将其流式传输到页面然后保存页面。我不确定该怎么做。

页面是上下文敏感的,所以我想我将首先使用SPSite和SPWeb来访问列表。

我不清楚的是,我如何获得布局?我想我应该可以添加一个像这样的页面:

 SPWeb web = SPContext.Current.Site.OpenWeb();


                    SPList Pages = web.Lists["Pages"];
                    SPListItemCollection splc = Pages.Items;


                    foreach (SPListItem spli in splc)
                    {
                        if (spli.Name == "lmIntraTopicsArticle")
                        {

                        }
                    }

                    SPListItem sli = splc.Add();
                    Pages.Update();
                    SPFolder PagesFolder = Pages.RootFolder;
                    byte[] layoutContents = new byte[20];
                    SPFile myNewPage = PagesFolder.Files.Add(PagesFolder.Url + "/TopicWindowArchive.aspx", layoutContents);
                    web.Update();

现在我需要弄清楚如何从布局中添加内容。如果我弄明白,请更新一些。

谢谢,

1 个答案:

答案 0 :(得分:5)

诀窍是获取一个PublishingWeb对象。那包含布局。

请参阅here以获取示例

PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(web);

string pageName = “MyCustomPage.aspx”;

PageLayout[] pageLayouts = publishingWeb.GetAvailablePageLayouts();

PageLayout currPageLayout = pageLayouts[0];

PublishingPageCollection pages = publishingWeb.GetPublishingPages();

PublishingPage newPage = pages.Add(pageName,currPageLayout);

newPage.ListItem[FieldId.PublishingPageContent] = “This is my content”;

newPage.ListItem.Update();

newPage.Update();

newPage.CheckIn(“This is just a comment”);

另外check this answer