我正在尝试使用流畅的api为Sitefinity cms系统中的控件创建一个控件的默认页面。
页面创建位于该特定控件的安装程序部分。
我在installer.cs
中添加了代码,以便在安装后只创建一次页面。但系统不允许创建页面。由于之前的认证部分(我的猜测)。因为页面需要由某个用户名拥有。
所以我试图通过一些安全信息进行身份验证。以下是代码
UserLoggingReason result = SecurityManager.AuthenticateUser("Default", "username","password", true);
但上面的行总是抛出空引用异常,我不知道需要做什么。
答案 0 :(得分:1)
代码不应该在installer.cs中,而应该在module.cs文件中。 您将看到在Install方法中调用:
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方法 - 这意味着它已在管理员权限下运行。