Создать страницу программно с C # в SharePoint 2007 - PullRequest
2 голосов
/ 01 ноября 2011

Не уверен, если это спрашивается, но поиск не совсем дал то, что я ищу. У меня уже есть макет страницы, что мне нужно сделать, это программно создать страницу в библиотеке страниц.

Я не совсем уверен в деталях, но почему-то мне кажется, что мне нужно открыть макет, затем передать его на страницу и затем сохранить страницу. Я не уверен, как это сделать.

Страница является контекстно-зависимой, поэтому я думаю, что начну с использования 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 Ответ

5 голосов
/ 02 ноября 2011

Хитрость заключается в том, чтобы получить объект PublishingWeb.Это содержит макеты.

См. здесь для примера

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”);

Также проверьте этот ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...