组织事件处理程序方法

本文关键字:方法 程序 事件处理 | 更新日期: 2023-09-27 18:02:08

我在web表单中使用asp.net和c#。

使用Visual Studio,它会自动为控件创建事件处理程序方法。VS以这种方式生成方法名idControl_event。我知道我可以给事件处理程序方法起任何名字。

  • 所以我想知道你最喜欢的命名主题的方法是什么

  • 我想知道是否使用Web表单可以在单独的类中编写事件处理程序方法(而不是在特定网页的代码后面)以及如何从控件调用主题。

感谢您的宝贵时间。

组织事件处理程序方法

对于事件处理程序名称,我通常使用Visual Studio默认生成的格式:[idControl]_[eventName]。但这很大程度上是个人/团队的偏好。我看到过类似的讨论比如这个或者这个。无论您选择如何命名事件处理程序,我认为最重要的是保持一致。

至于将事件处理程序置于代码之外,我没有经常看到这样做,但这是可能的。最简单的方法是在具有公共事件处理逻辑的单独类中使用静态方法。例如,以下是如何为Page提供标准逻辑的。在单独的类中加载。我相信你需要通过代码注册事件处理程序——我不认为你可以在标记(aspx)中做到这一点。

public static class CommonEventHandlers
{
    public static void Page_Loaded(object sender, EventArgs e)
    {
        //Do any standard logic
        //If you need a reference to the page that raised the event, 
        //   you can get it from the 'sender' parameter.
        Page page = (Page)sender;
        //Do something with 'page'
    }
}

然后在要使用公共事件处理程序的页面的代码后面:

public partial class WebForm1 : System.Web.UI.Page
{
    public WebForm1()
    {
        //Register the handler via code in the constructor
        Load += CommonEventHandlers.Page_Loaded;
    }
}

作为另一种选择,您可以使用继承来帮助代码重用。例如,您可以有一个基类,您的Pages可以从这个基类继承,它具有标准处理程序。这样做的一个好处是,您可以在标记中注册事件处理程序,即使该方法是在基类中声明的,因此您不需要在祖先页面的代码隐藏中执行任何操作。

我不认为你可以在另一个类中有事件处理程序,最好是在一个单独的部分类文件

就像@Daniel Powell说的,我很确定你对事件能做的最好的事情就是把它们作为你代码背后的部分类放在一个不同的文件中。

关于命名约定,95%的时间我看到事件命名像你说的- idControl_event。这就是我命名它们的方式,因为当我查看源代码时,它可以很容易地将代码绑定到控件。