不久前,我观看了Joe Brinkman关于开发MVC模块的演示,一些东西引起了我的注意。他在Persona Bar中创建管理条目的方法简单而高效。当时我就记在心里了,今天我又遇到了同样的情况。我们必须手动在角色栏中创建一个管理页面。显然,在DNN 9中你不能轻易做到这一点。在页面设置屏幕中,不能选择Admin页面作为父页面。这是禁用的。
在角色栏中手动创建页面
DNN Sharp的Radu Niculcea发现了一种变通方法。我将在这里给出它,尽管本文的目的是向您展示如何通过编程实现它。
1.更改Admin页面的权限,使其对注册用户可见
2.创建自定义管理页面并选择Admin页面作为父页面,现在它是可选择的
3.删除“Admin”页面的“注册用户”视图权限
Josh Slaughter提出了另一种解决方法。也就是说,使用来自Persona Bar的Add Multiple Pages特性,它允许您选择Admin作为父页面。
以编程方式创建角色栏条目
无论如何,回到创建一个模块的角色栏条目,让我先给你一个概述,我们是如何做到这一点之前,发现这个宝石。我们将使用IUpradebale接口,该接口在安装/更新模块扩展时被调用。在这个接口中,我们将调用DNN方法来在admin下创建页面。除了创建页面的代码之外,本文对解决方案进行了详细的描述。
这个解决方案的问题是,当创建新的门户时,它们不包含我们的管理页面。因此,最后,我们实现了一个初始化方法,该方法在其他代码之前被调用,以检查管理页面是否存在。我们有很多代码,让我告诉你,有各种各样的问题需要考虑,比如如果页面在回收站中会发生什么。
以编程方式创建角色栏条目的好方法
我的发现是,DNN实际上可以自动创建角色栏条目(DNN 8是Admin下的页面),只需将几行元数据添加到. DNN清单中。这些行放入需要添加到管理页面的模块的节点中。
< desktopModule >
…
<名称>配置管理器< /名称>
<图标> ~ /图标/σ/ Configuration_16X16_Standard.png > < /图标
< largeIcon > ~ /图标/σ/ Configuration_32X32_Standard.png < / largeIcon >
修改站点的配置设置
> < /页
....
< / desktopModule >
这是所有!DNN负责在模块安装期间为所有门户创建页面。它还负责为新创建的门户创建页面。这个特性实际上为我们节省了数百行代码。
一点历史
我找不到这个特性的文档,所以我挖掘了它的历史。看来你花了不少心思啊。我在DNN跟踪器上发现了DNN-7485问题,它有关于预期用例的非常好的文档。我无法将其连接到特定的提交,但为了确保它符合我们向后兼容的目的,我下载了DNN 8.0.0源代码并进行了查找。它就在那里。我们计划在1月份放弃对dnn7的支持,所以看起来我们将在未来经常使用这个功能。
结论
使用.dnn清单方法可以轻松地为模块创建自定义管理页面。在dnn9中,它在Manage部分下的Persona Bar中添加了条目。在DNN 8上,它在Admin下创建条目。也可以选择在Host下添加它。这种方法的优点是只需要很少的代码来管理,并且还可以为新的门户创建条目。