正确注册全球活动的方法

时间:2018-08-21 08:17:15

标签: kentico

我需要注册一个自定义的全局事件,该事件将在更新 Kentico 11 CMS 中的RoleInfo对象之前执行。

文档说明:

  

事件类。事件操作。事件类型+ =处理程序方法名称

位置:

  

事件类 –事件类是与功能组相关的事件的容器
  事件动作 –代表特定动作   在系统内发生的
  事件类型 –确定确切的时间   事件发生,通常在操作之前或之后。一些动作   只有一种类型:执行

关于此,注册我需要的事件的正确方法是吗?如果没有,请多加解释,因为这部分文档对我来说仍然不清楚。

RoleInfoProvider.Events.Update.Before += MyMethod

2 个答案:

答案 0 :(得分:0)

信息提供程序是允许您处理对象的类。您最有可能寻找的是信息对象的事件。使用Roles事件处理程序将如下所示:

RoleInfo.TYPEINFO.Events.Update.Before + = RoleInfo_Update_Before;

文档在这方面有点通用,您基于使用全局对象事件而不只是全局事件的示例,因此您可以通过对象TYPEINFO访问对象事件。全局事件往往具有自己的类,例如RequestEvents或URLRewriting事件。

不要忘记在HTTP模块中注册事件处理程序,并使用正确的属性正确注册它。

答案 1 :(得分:0)

对象事件是可以为从AbstractInfo基类继承的所有类(如UserInfo,RoleInfo,SiteInfo等)注册的事件。因此,在您的情况下,RoleInfoProvider不是从AsbtractInfo类继承。

您应该使用

RoleInfo.TYPEINFO.Events.Update.Before += YourMethod

您还应该在自定义模块类中对其进行初始化,例如。

[assembly: RegisterModule(typeof(CompanyOverviewModule))]

公共类CompanyOverviewModule:模块 {

public CompanyOverviewModule()
    : base("CompanyOverview")
{
}

// Initializes the module. Called when the application starts.
protected override void OnInit()
{
    base.OnInit();


   RoleInfo.TYPEINFO.Events.Update.Before += Role_UpdateBefore;
}

private void Role_UpdateBefore(object sender, ObjectEventArgs e)
{
    RoleInfo ri = (RoleInfo)e.Object;

}
}