也谈AutoEventWireup

    今天在论坛上遇到这样一个问题,在页面上可有一个H1标签,并设置该H1的runat=server,于是在后台修改这个H1的InnerHTM,但是运行的结果是,H1的InnerHTM的值始终修改不了。
    但是用他的代码在本地测试一下发现,可以修改呀!这是怎么回事?莫非见鬼了不成?后来仔细观察他的代码发现:

<%@ Page Title="Test 1" Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" %>

AutoEventWireup 的值是false. 问题就在这里。
如果AutoEventWireup 是false, 那么page的load事件时不执行的,所以H1的innerHTML的值不会被修改。
如果在Asp.NET中修改AutoEventWireup="true",会使页面与某些特殊的事件方法绑定,自动识别这些具有特定名称的事件,而不需要进行委托。这些特定名称包括:Page_Init, Page_Load, Page_DataBind, Page_PreRender和Page_Unload。

在大部分情况下,页面不需要关联如此多的特殊事件,会增加额外的操作和系统开销。同时, ASP.NET 页框架自动调用事件处理的方法基于其预定名称,这会导致到相同事件处理方法当页运行被调用两次,也会增大系统开销。

转载于:https://www.cnblogs.com/Amanda2007/archive/2008/05/15/1198415.html

这段ASP.NET Web Forms页面代码展示了如何在一个基于主控页(Master Page)的网页中嵌入样式表和脚本文件,并组织HTML结构。下面是对各个部分的具体解析: ### 页面指令(Page Directive) ```aspx <%@ Page Title="" Language="C#" MasterPageFile ="~/Default.Master" AutoEventWireup="true" CodeBehind="Calibration.aspx.cs" Inherits="MI.Service.Web.Calibration.Calibration" %> ``` - **Title**: 设置当前页面标题,默认为空字符串。 - **Language**: 指定服务器端语言为 C#。 - **MasterPageFile**: 引用了名为 `Default.Master` 的主控页,用于统一网站布局设计。 - **AutoEventWireup**: 自动将事件处理函数与页面生命周期挂钩设为 true,意味着 ASP.NET 将自动连接某些标准事件(如 Page_Load)到相应的方法。 - **CodeBehind**: 指向包含服务器端逻辑(C#代码)的 `.cs` 文件的位置。 - **Inherits**: 规定了页面继承的具体类名。 ### 内容占位符(Content Placeholders) #### HeadContent (头部内容) ```html <asp:Content ID="HeaderContent" ContentPlaceHolderID="HeadContent" runat="server"> <!-- CSS 和 JavaScript 文件 --> </asp:Content> ``` 这部分是在主控页定义好的位置填充实际 HTML `<head>` 部分的内容,包括链接外部CSS文件和加载JavaScript库。这允许我们对每个单独页面添加特定资源而不影响其他页面。 #### MainContent (主体内容) ```html <asp:Content ID="MainContent" ContentPlaceHolderID="MainContent" runat="server"> <div class="menuBackground"></div> <div id="CalibrationTreeMenu"></div> <div class="CalibrationPanel"> <iframe id="CalibrationIframe" class="iframeStyle" src="" scrolling="no" frameborder="0"></iframe> </div> </asp:Content> ``` 这是放置在主控页预留区域的实际页面主要内容: - 使用了三个 `<div>` 元素来构建页面的基本框架。 - 包含了一个空 iframe (`<iframe>`)元素,其初始src属性值为空,可用于后续通过JS动态加载其他页面或内容片段。 ### 加载外部资源 在这部分内容里包含了两个重要的操作:一是引入了 jQuery 插件 "treeMenu", 另一个是自定义样式的校准面板 CSS 文件,以及相应的 JS 脚本来增强用户体验功能: ```html <link rel="stylesheet" href="../jQuery_plugins/MI_Service_treeMenu/css/MI_Service_treeMenu.css" type="text/css"/> <script type="text/javascript" src="../jQuery_plugins/MI_Service_treeMenu/js/MI_Service_treeMenu.js"></script> <link rel="Stylesheet" type="text/css" href="../Styles/Calibration/Calibration.css"/> <script type="text/javascript" src="../Scripts/Calibration/Calibration.js"></script> ``` 总结来说,以上代码实现了以下目的: 1. 定义了一种模块化的方式管理网页的不同组成部分; 2. 提供了一套机制可以方便地复用相同的布局模板; 3. 动态插入额外的前端依赖项(例如 CSS 或者 JavaScript),使得每个页面可以根据需求独立定制外观和交互行为。 --- ## 示例场景解释 考虑一个企业级Web应用系统,在其中有许多相似风格和导航栏配置的需求。借助于这种模式化的开发方式,我们可以轻松维护一组共通的设计主题,同时还能针对个别页面做特殊优化。比如在此案例中,创建了一个专门用于设备校准的操作界面,它不仅继承了全局一致性的视觉效果(背景图层、菜单等),还可以根据业务流程需要内联显示第三方web组件或者其它页面视图等内容。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值