如何在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
答案 0 :(得分:1)
您可以创建用户控件,或创建扩展标准Repeater类的类。在此自定义控件中,您实现了常见的OnItemCreated功能。
答案 1 :(得分:0)
这将有效
您的MyHelper
课程是否在 APP_Code ?
如果不是检查您在默认页面代码隐藏文件中包含的名称空间,该文件包含MyHelper
类的定义
答案 2 :(得分:0)
您可以创建一个基页并将公共事件处理程序代码放在那里。
然后在从该基页继承的子页面中,您可以调用基页事件处理程序方法。
这样做,您将有一个管理公共代码的中心点!无需随处更改。