asp.net - 事件示例?

标签 asp.net .net vb.net

我不完全理解何时应该使用事件,因此我相信我的工具包中存在很大的差距。三年前,我在一家公司开始工作,没有一个 .NET 声明单个事件。

我读过很多关于这个主题的文献,例如这里:http://bytes.com/topic/visual-basic-net/answers/381790-why-use-events在这里 When to use events?我能够使用它们。但是,我不明白什么时候应该使用它们。

我意识到事件遵循观察者模式,而观察者模式有助于松散耦合的代码。我正在寻找事件的商业示例。我正在寻找解释而不是代码。

我注意到以下观察者示例不使用事件:http://www.dofactory.com/Patterns/Patterns.aspx .

最佳答案

事件有用的一个很好的例子是,如果您有一个托管在 .aspx 页面内的用户控件。

假设我有一个显示人员详细信息的用户控件。用户控件具有与个人相关的字段,例如姓名、年龄、性别等。该用户控件可以托管在多个页面中(即 Page1.aspx、Page2.aspx 等)。用户控件的底部是一个保存按钮,当单击该按钮时,我希望在 .aspx 页面顶部显示一条消息,显示类似“人员已成功更新”的内容。

如果没有事件,用户控件需要知道哪个页面正在托管它,以便它可以告诉页面它需要更新要在页面顶部显示的标签文本。如果您只想在这一页上使用用户控件,那么这很好用,这称为紧耦合。现在,如果我想在另一个 .aspx 页面上使用用户控件该怎么办?呃哦,“人员已成功更新”消息被硬连接到“旧”页面,并且不起作用。

输入事件。在用户控件中,我可以定义一个事件,该事件可以由用户控件在适当的时间引发,在本例中是单击“保存”按钮时。

同时回到 .aspx 页面,它需要一种方式来表明我想要了解用户控件引发的事件,因此它通过对用户控件本身的引用来订阅用户控件的事件。现在,当用户控件引发事件时,页面会使用react并执行所需的操作。使用此用户控件的任何页面都可以选择订阅或忽略用户控件引发的事件,并且可以根据引发的事件执行不同的逻辑。例如,另一个页面可以显示一条消息并记录信息的成功更新。

简而言之,事件提供了一种信息从一个组件(用户控件)传递到另一个组件(页面)的 channel ,而双方都不需要知道彼此的存在。这允许用户控件独立于 .aspx 页面,但如果它(页面)选择关心该信息,仍然能够向其提供信息。

关于asp.net - 事件示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20104551/

相关文章:

asp.net - 带有 'x' 而不是传统勾号的 html 复选框

.net - 新的 .NET 3.5 项目 : Which DAL technology to use?

c# - 具有网络搜索功能的 Windows 应用程序

asp.net webforms - 这是持久状态的好方法吗?

asp.net 从 .resx 获取所有资源而不指定区域性 (ResourceManager.GetResourceSet )

.net - 对 WCF 服务的异步调用以静默方式随机失败

c# - 更新或删除数据库结果的当前行

c# - asp.net c#中访问母版页的方法

vb.net - 在 VB.NET 中将字符串转换为二进制

c# - LinkBut​​ton 在嵌套的 gridview 中不起作用