2

我目前正在开发一个 DNN 模块。如果我们能够在用户从页面中删除模块时以及从回收站恢复模块时运行自定义代码,那就太好了。

我还没有找到任何关于如何做到这一点的例子,所以我不确定这是否可能?有任何想法吗?

4

2 回答 2

3

我不知道 DNN 中的任何事件机制,您可以在其中设置挂钩。您可能可以调试 DNN 代码并跟踪调用堆栈,直到找到可以注入一些代码的可用位置(可能会在下一次 DNN 更新后被销毁),或者可能检测到打算由核心团队。

但是,如果从页面中删除模块,则 Modules 表中的 IsDeleted 字段设置为 true。如果它从 bin 中恢复,则再次设置为 false。

您可以在 Sql Server中使用触发模块表更新时触发的触发器,检查更新是否引用 IsDeleted 字段,将内容写入通知表,并使用基于 SqlDependency 的Sql查询通知来运行一些代码(参见http ://www.codeproject.com/Articles/144344/Query-Notification-using-SqlDependency-and-SqlCach进行介绍)。

要走一些步骤,但它应该可以工作(并且比攀登马特宏峰更容易:-))。

于 2012-11-12T11:26:53.763 回答
0

DNN 平台 (DotNetNuke) 中绝对有开发人员可以附加 C# 代码的钩子。

虽然我目前无法提供交钥匙示例,但请查看以下内容:

https://github.com/dnnsoftware/Dnn.Platform/blob/c35fdc7fb75db0438f3b872ce4e279e3ea73e7c2/DNN%20Platform/Library/Entities/EventManager.cs

您正在寻找通过它的声音挂钩到 ModuleRemoved 事件。

这是用户登录的示例,您可以适应您的事件:

当用户登录时,DNN 会触发事件吗?

我希望这对未来有所帮助。

于 2020-01-28T14:44:19.490 回答