Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在页面之间共享事件处理程序代码_C#_Asp.net_Event Handling - Fatal编程技术网

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

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.NET中创建事件处理代码并在多个页面上的控件之间共享

例如,两页带有

<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; }
    }