我是ASP.NET的新手,在a few problems击败我之后,我想知道我做错了什么(我养成了这样做的坏习惯)。我有兴趣了解ASP.NET的运作方式。
我的问题是:我在哪里可以找到文件来指导我决定在哪里进行处理?
作为一些具体的例子(我对这些问题的答案感兴趣,但我更倾向于指出一个提供更一般答案的资源):
Page_Load
进行哪些处理?Load
事件进行哪些处理?Page_Unload
编辑:this question也可能对某些人有用。
答案 0 :(得分:5)
您需要学习的第一件事就是能够理解您刚才提出的问题:PAGE LIFE CYCLE。有时这是一个婊子,特别是ViewState部分。
•我应该在Page_Load中进行哪些处理?
•我应该对Load事件进行哪些处理? = Page_load
•我在Page_Unload中可以做什么? 清理
•完成任务的顺序是什么? PAGE LIFE CYCLE
•每个事件何时被解雇? PAGE LIFE CYCLE
修改:图片来源:http://www.eggheadcafe.com/articles/20051227.asp
更多信息:http://www.codeproject.com/KB/aspnet/PageLifeCycle.aspx
答案 1 :(得分:5)
各个人发布的链接确实非常有用 - ASP.NET页面生命周期对于grok和master来说并不总是那么容易!
关于建议 - 我建议更喜欢被覆盖的方法与“魔法”附加的方法,例如
更喜欢protected override void OnLoad(EventArgs e)
超过
protected void Page_Load(object sender, EventArgs e)
为什么呢?简单:在重写的方法中,您可以指定自己是否以及何时调用基本方法:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
// your stuff
}
或:
protected override void OnLoad(EventArgs e)
{
// your stuff
base.OnLoad(e);
}
甚至:
protected override void OnLoad(EventArgs e)
{
// some of your stuff
base.OnLoad(e);
// the rest of your stuff
}
甚至:
protected override void OnLoad(EventArgs e)
{
// your stuff
// not call the base.OnLoad at all
}
您在Page_Load()版本中没有这种灵活性。
马克
答案 2 :(得分:4)
以下是一些很好的链接,可以帮助您入门。理解如何将 ASP.NET生命周期结合在一起对于理解代码如何与之交互至关重要。
ASP.NET Page Life Cycle Overview:
运行ASP.NET页面时,页面 经历了一个生命周期 执行一系列处理步骤。 包括初始化, 实例化控件,恢复和 维持状态,运行事件 处理程序代码和渲染。它是 对你来说很重要 页面生命周期让你可以写 代码在适当的生命周期 你打算效果的阶段。 此外,如果您开发自定义 控制,你必须熟悉 页面生命周期以便 正确初始化控件, 使用填充控件属性 视图状态数据,并运行任何控件 行为代码。 (一个人的生命周期 控件基于页面生命 循环,但页面引发更多事件 控件比可用的控件 仅限ASP.NET页面。)
将页面请求发送到Web时 服务器,是否通过提交 或位置更改,页面运行 通过其中的一系列事件 创造和处置。当我们尝试 构建ASP.NET页面和执行 我们不考虑周期 会引起很多麻烦 我们自己。但是,使用时和 操作正确,一个页面 执行周期可以是有效的 和强大的工具。许多开发人员 意识到理解什么 发生的事情发生时至关重要 有效地编写ASP.NET页面 或用户控件。所以让我们来看看吧 详细介绍了ASP.NET的十个事件 页面,从创建到处置。我们 还将看到如何利用这些 我们自己定制代码的事件。
答案 3 :(得分:2)
答案 4 :(得分:2)
我肯定会建议你阅读这篇文章:
http://www.west-wind.com/presentations/howaspnetworks/howaspnetworks.asp
如果你是asp.net的新手,你将无法解决所有问题,但实际上,我还没有找到关于ms文档或任何ms员工博客提交的主题的详细文档。
我做得很艰苦,并遵循我可以使用反汇编代码的每条路径,但那个人真的花时间写它。
答案 5 :(得分:-1)
基本上尝试在Page_Load
中执行,如果不起作用,请在Page_Init
或Page_Render
中尝试。通常其中一个工作:)这是科学的方法。