2016-03-10 87 views
0

我試圖爲在Sitefinity cms系統中使用流暢api開發的控件創建一個默認頁面。Sitefinity在應用程序啓動之前創建一個頁面

創建頁面位於該特定控件的安裝程序部分。 我已在installer.cs中添加了代碼,以便在安裝後僅創建一次頁面。但系統不允許創建頁面。由於之前的認證部分(我的猜測)。因爲該頁面需要由某個用戶名擁有。

所以我試圖通過一些安全信息進行身份驗證。下面是代碼

UserLoggingReason result = SecurityManager.AuthenticateUser("Default", "username","password", true); 

但上面的行總是拋出空引用異常,我不知道需要做什麼。

回答

1

該代碼不應位於installer.cs中,而應位於module.cs文件中。 你會看到,在安裝方法中,有一個電話:

this.InstallBackendPages(initializer); 

在那裏你可以像這樣創建頁面:

Guid groupPageId = Guid.NewGuid(); 
     Guid pageId = Guid.NewGuid(); 

     initializer.Installer 
      .CreateModuleGroupPage(groupPageId, "EmptyCustomModule1 group page") 
       .PlaceUnder(SiteInitializer.SitefinityNodeId) 
       .SetOrdinal(100) 
       .LocalizeUsing<AvalonNotificationsResources>() 
       .SetTitle("Avalon") 
       .SetUrlName("avalon") 
       .ShowInNavigation() 
       .AddChildPage(pageId, "Test Page") 
        .SetOrdinal(1) 
        .LocalizeUsing<AvalonNotificationsResources>() 
        .SetTitle("Test Page") 
        .SetUrlName("test-page") 
        .AddUserControl("~/UserControls/TestWidget.ascx", "Content") 
        .AddControl(new System.Web.UI.WebControls.Literal() 
        { 
         Text = "<h1 class=\"sfBreadCrumb\">Test Widget</h1>", 
         Mode = System.Web.UI.WebControls.LiteralMode.PassThrough 
        }) 
        .ShowInNavigation() 
       .Done() 
      .Done(); 

這肯定對我的作品沒有提供任何用戶憑據,因爲僅當管理員激活模塊並單擊安裝時纔會調用Install方法 - 這意味着它已在Admin權限下運行。

+0

這是否適用於普通頁面? – Balaji

+0

它應該,但您需要用您的選擇的前端頁面的Id替換.PlaceUnder(SiteInitializer.SitefinityNodeId)。 –

+0

文件'module.cs'將在哪裏? sitefinity的任何文檔? – Balaji

相關問題