在页面之间共享事件处理程序代码

时间:2011-04-13 09:41:17

标签: c# asp.net event-handling

如何在ASP.NET中创建事件处理代码并在多个页面上的控件之间共享?

例如,两页

<asp:Repeater runat="server" OnItemCreated="NavigationItemCreated">

我没有为每个页面复制它,而是试图将它放入两个页面都可以访问的类中

<asp:Repeater runat="server" OnItemCreated="MyHelper.NavigationItemCreated">

课程如下:

public class MyHelper
{
    public static void NavigationItemCreated(object sender, RepeaterItemEventArgs e) { }
    public static string MyProperty { get; set; }
}

但是,当我尝试运行时出现错误(无论是否有static):

  

编译器错误消息: CS1061:'ASP.page_default_aspx'不包含'MyHelper'的定义,并且没有扩展方法'MyHelper'接受'ASP.page_default_aspx'类型的第一个参数可能是发现(您是否缺少using指令或程序集引用?)

我仍然可以使用MyProperty访问<%# MyHelper.MyProperty %>,因此页面可以使用MyHelper,而不是使用事件处理程序。

更新
使类和事件处理代码静态,但也不起作用,也没有将它放入它自己的命名空间并使用MyNamespace.MyHelper.NavigationItemCreated

3 个答案:

答案 0 :(得分:1)

您可以创建用户控件,或创建扩展标准Repeater类的类。在此自定义控件中,您实现了常见的OnItemCreated功能。

答案 1 :(得分:0)

这将有效

  1. 您的MyHelper课程是否在 APP_Code

  2. 如果不是检查您在默认页面代码隐藏文件中包含的名称空间,该文件包含MyHelper类的定义

答案 2 :(得分:0)

您可以创建一个基页并将公共事件处理程序代码放在那里。

然后在从该基页继承的子页面中,您可以调用基页事件处理程序方法。

这样做,您将有一个管理公共代码的中心点!无需随处更改。

相关问题