C# 在页面之间共享事件处理程序代码
如何在ASP.NET中创建事件处理代码并在多个页面上的控件之间共享 例如,两页带有C# 在页面之间共享事件处理程序代码,c#,asp.net,event-handling,C#,Asp.net,Event Handling,如何在ASP.NET中创建事件处理代码并在多个页面上的控件之间共享 例如,两页带有 <asp:Repeater runat="server" OnItemCreated="NavigationItemCreated"> 但是,当我尝试运行时(无论是否使用static),我都会遇到一个错误: 编译器错误消息:CS1061:'ASP.page\u default\u aspx'不包含'MyHelper'的定义,并且找不到接受'ASP.page\u default\u aspx'类型的第
<asp:Repeater runat="server" OnItemCreated="NavigationItemCreated">
但是,当我尝试运行时(无论是否使用static
),我都会遇到一个错误:
编译器错误消息:CS1061:'ASP.page\u default\u aspx'不包含'MyHelper'的定义,并且找不到接受'ASP.page\u default\u aspx'类型的第一个参数的扩展方法'MyHelper'(是否缺少using指令或程序集引用?)
我仍然可以使用
访问MyProperty
,因此MyHelper
可以由页面使用,而不是由事件处理程序使用
更新:将类和事件处理代码设置为静态,这也不起作用,将其放入自己的命名空间并使用
MyNamespace.MyHelper.NavigationItemCreated
也不起作用。您可以创建一个用户控件,或创建自己的类来扩展标准Repeater类。在此自定义控件中,您可以实现常见的OnItemCreated功能。这将起作用
MyHelper
类是否在应用程序中MyHelper
类的定义您可以创建一个基页并将公共事件处理程序代码放在那里 然后在继承自该基页的子页中,可以调用基页事件处理程序方法
这样,您将有一个中心点来管理公共代码!无需在任何地方更改它。该类位于应用程序代码文件中,没有命名空间(因此应该位于全局ASP命名空间中?)。我可以访问属性OK这一事实表明这是另一个问题页面没有代码隐藏:
<asp:Repeater runat="server" OnItemCreated="MyHelper.NavigationItemCreated">
public class MyHelper
{
public static void NavigationItemCreated(object sender, RepeaterItemEventArgs e) { }
public static string MyProperty { get; set; }
}