aspx页面第一行page指令中包含了一个AutoEventWireup属性
2008-09-14 17:15
使用Asp.NET时,新建的aspx页面第一行page指令中包含了一个AutoEventWireup属性。网上的很多教程认为这一属性,甚至这一行 代码都是没用的。其实,这是不了解Asp.NET事件处理模型的表现。简单来说,这一属性决定了当前页是否自动关联某些特殊事件。
首先,从浏览器页面触发的事件不能立刻在本地得到处理,而是POST至服务器上,因此,Asp.NET建立了委托(代理)机制。在建立一个事件的同时,建立相应的委托:
private void InitializeComponent() { this.mybutton.Click += new System.EventHandler(this.Button1_Click);//委托 }
private void Button1_Click(object sender, System.EventArgs e) { //事件内容 }
委托将事件与该页面显式关联。在AutoEventWireup="false"时,如果没有委托,事件将不执行。
这与早期VB采用的隐式事件挂起截然不同,各有利弊。但,Asp.NET中可以修改AutoEventWireup="true",使页面与某些特殊的事 件方法绑定,自动识别这些具有特定名称的事件,而不需要进行委托。这些特定名称包括:Page_Init, Page_Load, Page_DataBind, Page_PreRender和Page_Unload等。比如:
private void Page_Load(object sender, System.EventArgs e) { // 事件内容 }
针对这些事件方法,开发人员可以利用该参数避免编写过多的链接代码。如果该属性设置为"false",则代码应改为:
private void InitializeComponent() { this.mybutton.Click += new System.EventHandler(this.Button1_Click);//委托 this.Load += new System.EventHandler(this.Page_Load);//可以用AutoEventWireup属性避免的委托 }
private void Page_Load(object sender, System.EventArgs e) { // 事件内容 }
private void Button1_Click(object sender, System.EventArgs e) { //事件内容 }
一定不可以在没有委托的情况下使用Page_Load类似的方法!
大部分情况下,页面不需要关联如此多的特殊事件,会增加额外的操作和系统开销。同时, ASP.NET 页框架自动调用事件处理的方法基于其预定名称,这会导致到相同事件处理方法当页运行被调用两次,也会增大系统开销。因此,Microsoft 建议始终将 AutoEventWireup 设置为 FALSE。
|
分享到:
相关推荐
可以通过@Page指令的AutoEventWireup属性自动绑定事件,或者手动绑定。 **总结** 在ASP.NET中,页面间信息保存依赖于数据的类型、大小和安全性要求。理解页面生命周期有助于选择正确的保存策略,并在适当的时间点...
此外,在 ASP.NET 中,我们还可以使用 AutoEventWireup 属性来自动注册事件。这个属性可以被设置为 true 或 false,默认是 true。当这个属性被设置为 true 时,ASP.NET 将自动注册事件。 在本文中,我们还讨论了 ...
AutoEventWireup属性控制页面事件是否自动连接;CodeFile属性指定后置代码文件,与页面存在局部关系;Inherits属性定义页面类。 15. Repeater控件:ASP.NET中的Repeater控件生成的HTML代码非常简洁,允许高度自定义...
- **禁用AutoEventWireup**: AutoEventWireup属性默认为true,自动将事件与方法关联。若不需要自动事件绑定,可在Machine.config中将其设为false,手动管理事件订阅,降低性能损耗。 通过上述技术,开发者可以有效...
页面使用C#作为后端语言,通过AutoEventWireup属性关联事件处理程序。这段代码显示了登录页面的部分HTML和JavaScript,用于验证用户输入的账号和密码是否为空。JavaScript函数CheckNull()负责检查表单字段,如果账号...
3. **AutoEventWireup属性**: `AutoEventWireup="true"`意味着页面的生命周期事件会自动与方法关联,简化了事件处理的设置。 4. **用户控件**: `<%@ Register %>`指令引入了一个名为`lefttree.ascx`的用户控件,该...
- **概念**:AutoEventWireup属性控制页面事件(如Page_Load)的自动绑定。 - **优化建议**: - 将`AutoEventWireup`设置为`false`可以稍微提升性能。 - 页面开发人员需要手动实现这些事件处理方法。 ##### 3.4 ...
- 修改Web.config文件中的AutoEventWireup属性为`false`,减少事件自动绑定,提高页面加载速度; - 避免使用自定义状态管理,以减少额外的资源消耗。 #### 4. 页面输出缓存 页面输出缓存是提高网站响应速度的...
AutoEventWireup属性默认为True,使得在没有显式关联事件处理程序的情况下,页面事件可以自动触发。然而,这可能会限制事件处理程序的灵活性,并对性能产生负面影响,特别是在高流量网站中。因此,对于需要优化性能...
其中CodeBehind属性指定代码隐藏页面的名称,Inherits指定所属的命名空间和类,AutoEventWireup属性是可以赋值为true和false,默认是赋值为true。我们先在Default.aspx页面中放入两个Literal控件: 代码如下: <...
总结来说,了解和掌握Page_Load被执行两次的问题,以及如何通过设置AutoEventWireup属性和显式处理页面生命周期事件来解决这个问题,对于开发高效且稳定的*** Web应用程序是非常重要的。希望本文能够为遇到类似问题...
AutoEventWireup属性允许开发者在页面加载时自动触发事件处理程序,而无需显式声明。虽然这可能简化开发流程,但MSDN文档中提到,此属性默认设置为True,可能会限制开发者对事件命名的灵活性,并对高流量网站的性能...
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="demo.Default" %> <!DOCTYPE html> 反射示例 Student student = new Student(); string propertyInfo = ...
页面的声明部分使用了@Page指令,其中指定了Language为C#,表明页面的代码后台使用的是C#语言,并且通过AutoEventWireup属性来指定页面是否自动关联事件处理器。CodeFile属性指定了页面代码文件的位置,而Inherits...
- `@Control` 指令:定义了控件的语言(C#)、自动事件绑定(AutoEventWireup)是否开启(这里是关闭的)、代码后台文件(Codebehind)以及继承的类(Inherits)。 - `asp:DataGrid`:这是一个服务器控件,用于...
AutoEventWireup=”true” CodeBehind=”Default.aspx.cs” MaintainScrollPositionOnPostback=”true” Inherits=”Default.Default” %> 在html原页面顶部将MaintainScrollPositionOnPostback属性设置为true就OK了...
在VS中,页面的定义会包含`CodeBehind`属性,指向对应的后台代码文件,如`main.aspx.cs`,同时还会有`AutoEventWireup`和`Inherits`属性。`AutoEventWireup`用于自动连接控件事件,`Inherits`属性指定了页面类的名称...
假设Web页面的`AutoEventWireup`属性已经设置为`enabled`。 **问题**: 需要在Web页面中捕获所有未处理的异常并在一个处理异常的日志方法中处理这些异常。应该创建哪一个方法? **选项**: - A. `Page_Error` - B....