以前根本不注意AutoEventWireup这个小小的属性,但是后来由于它产生的许多麻烦使我不得不研究它,并最终领悟了它。
如果你写了一个asp.net页面,里面包含了服务端脚本:
<@ Page language=c# AutoEventWireup="false" Inherits="Chapter3.ch21" %>
<html>
<script language=c# runat=server>
void Page_Load(object sender, EventArgs e)
{
lblMessage.Text="<a href='http://techmango.com'>Thinking in Techmango.com</a>";
}
</script>
<body>
<form runat=server>
<asp:label id=lblMessage runat=server />
</form>
</body>
</html>
运行后结果什么都不显示,怎么回事呢?!当然就是因为AutoEventWireup被设置成false了。AutoEventWireup是什么意思,对该代码有什么影响了。我查了一下msdn AutoEventWireup 指示页的事件是否自动连网。如果启用事件自动连网,则为 true;否则为 false。
自动连网,这是什么意思,不明白,我又去google上搜了一下,查到了一个简单明白的回答:
如果 Page 指令的 AutoEventWireup 属性被设置为 true(或者如果缺少此属性,因为它默认为 true),该页框架将自动调用页事件,即 Page_Init 和 Page_Load 方法。在这种情况下,不需要任何显式的 Handles 子句或委托。
当AutoEventWireup为true时,html中服务端脚本才被执行,结果才会出来在页面!
但是!反过来说,当AutoEventWireup为false时,却有它的好处,为什么? 当然就是因为我们常常用的后代码技术,如果当AutoEventWireup为true时,页面会执行两次,据我个人理解,.net环境会执行一次来运行html中包含的服务器端脚本,另外一次来执行后代码中的各个函数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)