Создать веб -часть программно против 2010
-
16-10-2019 - |
Вопрос
Мы должны создать несколько веб -частей после того, как сайт обеспечивается WSP. Я могу либо создать WP с нуля на функциональном действии. Или сохраните набор WP в галерее и создайте экземпляр, когда это необходимо. WSP для шаблона сайта также создает список и библиотеки, куда пойдут эти WP. Надеюсь, я имею смысл. Каковы мои лучшие варианты создания WP, когда сайт является положениями. Мне придется добавить какой -то код для создания WP в конце обеспечения сайта, поэтому я уверен, что все списки были созданы. Пожалуйста, предложите.
Решение
Хорошо, подумайте, что у нас есть эта среда:
- У нас есть файл WSP на уровне фермы (это также может быть написано на песочке в этой ситуации, но для ясности давайте рассмотрим, что это фермерский).
- Этот WSP содержит некоторые списки и определения/экземпляры библиотек, а также несколько визуальных веб -частей.
- Кроме того, файл WSP содержит хотя бы одну функцию в нем.
- Этот WSP добавляется в вашу ферму, развернутую в указанную коллекцию сайтов, а функция активируется там. Таким образом, списки и библиотеки создаются, а веб -части добавляются в галерею.
- После всего этого мы хотим создать создание веб -части WebPart1 'на странице сайта «default.aspx».
С этого момента мы можем добавить некоторый код в приемник функций (в FeatureActivativivativiviving), чтобы достичь нашей цели. Этот код будет выглядеть так:
// prepare the webpart
var webPart = new WebPart1();
// ...here you can initialize some webpart properties, if needed
// fetch SPFile object for default.aspx page
SPFile page = web.RootFolder.Files["default.aspx"];
if (page.Exists)
{
// ...here you probably need to check out the page if it is a publishing site
// get LimitedWebPartManager object for the page
var webPartManager = page.GetLimitedWebPartManager(PersonalizationScope.Shared);
// add our webpart into the 'Main' webpart zone, using zone index = 1
webPartManager.AddWebPart(webpart, "Main", 1);
// ...do not forget to commit your changes here if you are using publishing site
// save our changes
page.Update();
}
Ссылки MSDN: