求asp.net webform 工作的流程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求asp.net webform 工作的流程相关的知识,希望对你有一定的参考价值。

服务器什么的不怎么懂啊, 好像和IIS 什么的有关,求运行的详细流程,从page_load 开始

1)首先,浏览器只认识(也就是只能识别并显示)html格式的内容(这个是国际标准)。一般地,浏览器通过URL请求Web服务器,服务器响应请求并向浏览器输出HTML格式的内容;
2)一个WebForm中,既有HTML内容又有非HTML内容(如后台代码,ASP.NET控件等等)。因为不是“纯粹的HTML”,如果直接输出给浏览器,浏览器根本不认识。
3)这个时候IIS的作用体现出来啦:浏览器向IIS(Web服务器)请求一个WebForm,IIS接收到请求后,找到浏览器所请求的.aspx文件,然后
将.aspx文件中后台代码、ASP.NET控件等非HTML内容转换成标准的HTML格式的内容!这时,被请求的.aspx文件,实际已经变成了标准的
HTML格式的内容了。IIS最后将转换后的HTML文件输出到浏览器,浏览器就可以正常显示了。
4)page_load事件是在IIS开始处理.aspx时引发的事件
参考技术A 这个可不是三言两语就能说清楚的,不过你可以看看官方的文档:

IIS 7.0的ASP.NET应用程序生命周期概述:http://msdn.microsoft.com/zh-cn/library/bb470252%28v=vs.100%29.aspx

ASP.NET页面生命周期概述:http://msdn.microsoft.com/zh-cn/library/ms178472%28v=vs.100%29.aspx

正确使用 asp.net webforms 生命周期

【中文标题】正确使用 asp.net webforms 生命周期【英文标题】:Proper use of asp.net webforms lifecycle 【发布时间】:2012-06-16 13:46:02 【问题描述】:

这确实是一个更笼统的问题,但我能想到的唯一方法是举一个具体的例子。

我们目前有一个带有SPGridView 的网络部件。现在,GV 和所有绑定字段都在CreateChildControls 中创建,数据在OnPreRender 中检索和绑定。这些列是静态的,因此可以正常工作。

CreateChildControls
    // create and configure the gridview
    // create all bound fields and add them to the gridview
    // add the gridview to the page


OnPreRender
    // get the data and bind it to the gridview

现在我们需要将列更改为取决于用户从下拉列表中所做的选择。在CreateChildControls 中,我们无法从下拉控件中获取值,因此我们无法有条件地添加绑定字段。我的问题是,这里的最佳做法是什么?我们可以在CreateChildControls 中创建所有可能的绑定字段,然后只将适当的字段添加到OnPreRender 中的GV。我们可以将所有绑定字段的创建完全移动到OnPreRender。还有很多其他的选择。

CreateChildControls
    // create and configure the gridview
    // create ALL bound fields here?
    // add the gridview to the page


OnPreRender
    // or maybe create only the applicable bound fields here?
    // add the appropriate fields to the gridview
    // get the data and bind it to the gridview

从更一般的意义上说,什么真正构成了“创建”控件(CreateChildControls 的目的)?这个问题确实延伸到任何可能具有动态内容的控件。将条目添加到下拉列表等的合适位置在哪里。有很多工作方式,但哪种方式是“正确的”?是否将选择添加到“创建”控件的下拉部分?是否取决于选择是否是动态的?

【问题讨论】:

可能不是一个完整的答案,但这里有一些 light 从 MSDN 阅读的关于 ASP.NET 页面生命周期的内容。另请注意页面底部的一些 cmets,以提供更多信息/评论。编辑:如果我包含链接有帮助:msdn.microsoft.com/en-us/library/ms178472.aspx 【参考方案1】:

BoundField 不是控件,gridview 中的Columns 集合是状态管理的,因此您可以在对控件进行数据绑定之前安全地在PreRender 事件中添加列。

【讨论】:

以上是关于求asp.net webform 工作的流程的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET web开发 MVC设计模式 上手

在 ASP.NET Webform 中扩展 DropDownList

一个简单的ASP.NET Web Forms应用程序

在我现有的 ASP.NET WebForm 项目中集成 YAF.NET

asp.net webform 中使用Microsoft ASP.NET Web Optimization压缩js及css

如何在 Asp.Net WebForm 中调用 Web API?