我需要注册一个自定义的全局事件,该事件将在更新 Kentico 11 CMS 中的RoleInfo
对象之前执行。
文档说明:
事件类。事件操作。事件类型+ =处理程序方法名称
位置:
事件类 –事件类是与功能组相关的事件的容器
事件动作 –代表特定动作 在系统内发生的
事件类型 –确定确切的时间 事件发生,通常在操作之前或之后。一些动作 只有一种类型:执行
关于此,注册我需要的事件的正确方法是吗?如果没有,请多加解释,因为这部分文档对我来说仍然不清楚。
RoleInfoProvider.Events.Update.Before += MyMethod
答案 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;
}
}