如何在 Visual Studio 2008 IDE 中订阅页面事件
重要
有人能解决这个问题吗?
如何在 VS 2008 中创建页面的 Init、Load、PreRender 等事件处理程序?当我们双击页面时,它将创建 Page_Load 事件。如何创建页面的其他事件?我在 ASP.NET 应用程序中使用 C#。
中没有“事件”选项卡图像。
IMPORTANT
Can any body solve this one ?
How to create page's Init, Load, PreRender etc. event handlers in VS 2008? When we double click on the page, it will create Page_Load event. How to create othere events of page? I am using c# in ASP.NET application.
There is no Event tab in image.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
要订阅 Page 事件,有以下方法:
重写 Web.UI.Page 类的 on_xxx 方法。为了方便起见,只需开始输入
private override
,当您输入 override 关键字时,Intellisense 会自动告诉您可以覆盖的可用方法,您可以从那里选择它并按 Tab 键(原型方法将自动为您创建)。如果页面已将 AutoEventWireup 属性设置为 true,那么您只需定义一个原型和名称为
Page_[your event]
的方法,如Page_Init< /code> 带有适当的参数。并且事件将自动连接。
<块引用>
ASP.NET 页面框架支持一种机制,该机制使用 Web 窗体页面的 AutoEventWireup 属性来自动关联页面事件和事件处理程序方法。如果 @ Page 指令的 AutoEventWireup 属性设置为 TRUE(或者由于其默认值为 TRUE 而未指定),则 ASP.NET 页面框架会自动调用页面事件处理程序方法。
例如,Page_Init 和 Page_Load 事件处理程序方法由 ASP.NET 页面框架显式调用,无需显式事件委托。
但是,使用 AutoEventWireup 属性自动关联页面事件及其事件处理程序方法的缺点是事件处理程序方法必须具有标准的预定义名称。这限制了您命名事件处理程序方法的方式。
Following is the summary of page Events in their order:
I usually refer this cheetsheet kind of image from MSDN to check which method to override:
For subscribing to Page events there are following ways:
override the on_xxx methods of the Web.UI.Page class. For ease just start typing
private override
when you will type override keyword the Intellisense will automatically tell you the available methods you can override and you can select it from there and press tab (The prototype for the method will automatically be created for you).If the page has set AutoEventWireup attribute set to true then you can just define a method with prototype and name as
Page_[your event]
likePage_Init
with appropriate parameters. And the events will will automatically be wired up.Following is the summary of page Events in their order:
I usually refer this cheetsheet kind of image from MSDN to check which method to override:
这是你的答案
在解决方案资源管理器中,右键单击页面并从上下文菜单中选择“查看组件设计器”,现在在属性窗口中您将看到事件选项卡。
Here is your answer
In the solution explorer, right click the page and select "View component designer" from the context menu, now in the properties window you will have the event tab.
我更喜欢的方法是使用 On 方法,因此键入 override OnLoad 来设置加载事件处理程序、OnPreRender 等。这些方法中的每一个本质上都会调用相应的事件处理程序,如下所示:
我还认为您可以添加一个事件处理程序手动:
无需为此设置任何内容(无需显式侦听该事件),但我不能 100% 确定这一点。
HTH。
The way I prefer is to use the On method instead, so type override OnLoad to setup the load event handler, OnPreRender, etc. Each of these methods essentially calls the respective event handler, as in:
I also think you can add an event handler manually:
Without needing to set anything up for this (no explicit listening for the event), but I'm not 100% sure of this.
HTH.
此链接可能会有所帮助——它是页面“生命周期”的 msdn 参考,包括创建您提到的其他事件。
http://msdn.microsoft.com/en-us/library/ms178472。 aspx
除了双击页面控件(按钮、超链接、数据控件)之外,查看包含页面其他“生命周期”事件的 c# 文件时还有一个下拉列表,以及您创建的其他控制事件。
This link may be helpful -- It is the msdn reference for a pages "life cycle" including creating of other events like you mentioned.
http://msdn.microsoft.com/en-us/library/ms178472.aspx
In addition to double clicking on page controls (buttons, hyperlinks, datacontrols), there is a drop-down list when looking at the c# file that contains other "life-cycle" events of a page, as well as other control events you have created.
看看这个: http://msdn .microsoft.com/en-us/library/6w2tb12s%28v=VS.90%29.aspx(VS 2008版本)
它表示您可以使用名称Page_event以声明方式创建方法。
例如,要为页面的 Load 事件创建处理程序,请创建名为 Page_Load 的方法。
ASP.NET 页面自动将页面事件绑定到名为 Page_event 的方法。此自动绑定由 @ Page 指令中的 AutoEventWireup 属性配置,默认设置为 true。如果将 AutoEventWireup 设置为 false,页面不会自动搜索使用 Page_event 命名约定的方法。
为我工作!
Take a look at this: http://msdn.microsoft.com/en-us/library/6w2tb12s%28v=VS.90%29.aspx (VS 2008 version)
It says that you can create a method declaratively with the name Page_event.
For example, to create a handler for the page's Load event, create a method named Page_Load.
ASP.NET pages automatically bind page events to methods that have the name Page_event. This automatic binding is configured by the AutoEventWireup attribute in the @ Page directive, which is set to true by default. If you set AutoEventWireup to false, the page does not automatically search for methods that use the Page_event naming convention.
Worked for me!