Add an MVC Widget To a Page Programmatically
Question is pretty straightforward: how do you add mvc widgets to pages programmatically? Something like this: Add control to a page
var pageNode = manager.GetPageNode(pageId);var template = manager.GetTemplates().Single(x => x.Name == "TicketOmaha.home");AddPageTemplate(manager, pageNode, template);AddContentBlockWidgetToPage(manager, pageNode, "Content");private static void AddContentBlockWidgetToPage(PageManager pageManager, PageNode pageNode, string placeholder) //pageManager.Provider.SuppressSecurityChecks = true; using (var mvcWidget = new Telerik.Sitefinity.Mvc.Proxy.MvcControllerProxy()) mvcWidget.ControllerName = typeof(ContentBlockController).FullName; mvcWidget.Settings = new Telerik.Sitefinity.Mvc.Proxy.ControllerSettings(new ContentBlockController() Content = "[Placeholder Example For Control Associated With This Production]" ); CreateControl(pageManager, pageNode, mvcWidget, "ContentBlock", placeholder); private static void AddPageTemplate(PageManager manager, PageNode pageNode, PageTemplate template) var pageData = pageNode.GetPageData(); var temp = manager.EditPage(pageData.Id); temp.TemplateId = template.Id; manager.PagesLifecycle.CheckIn(temp); manager.SaveChanges(); private static void CreateControl(PageManager pageManager, PageNode pageNode, Telerik.Sitefinity.Mvc.Proxy.MvcControllerProxy mvcWidget, string widgetCaption, string placeHolder) var page = pageManager.EditPage(pageNode.GetPageData().Id, CultureInfo.CurrentUICulture); var draftControlDefault = pageManager.CreateControl<PageDraftControl>(mvcWidget, placeHolder); draftControlDefault.Caption = widgetCaption; pageManager.SetControlDefaultPermissions(draftControlDefault); draftControlDefault.SiblingId = GetLastControlInPlaceHolderInPageId(page, placeHolder); page.Controls.Add(draftControlDefault); pageManager.PagesLifecycle.CheckIn(page); pageManager.SaveChanges();private static Guid GetLastControlInPlaceHolderInPageId(PageDraft page, string placeHolder) var id = Guid.Empty; var controls = new List<PageDraftControl>(page.Controls.Where(c => c.PlaceHolder == placeHolder)); while (controls.Count > 0) var control = controls.SingleOrDefault(c => c.SiblingId == id); id = control.Id; controls.Remove(control); return id;