ASP.NET 2.0页面框架的几处变化

asp.net|页面

新增的页面事件:
在ASP.NET 2.0中,一个ASP.NET页面的生命周期主要为(红色字体表示ASP.NET 2.0新增加的阶段页面事件):客户端请求页面—》预初始化(OnPreInit)—》初始化(OnInit)—》完成初始化(OnInitComplete)—》载入ViewState(LoadViewState)—》处理回送数据(IPostBackDataHandler)—》Page_OnPreLoad—》Page_OnLoad—》回发更改通知(RaisePostDataChangedEvent)—》处理回发事件(RaisePostBackEvent)—》Page_OnLoadComplete—》预呈现(OnPreRender)—》完成预呈现(OnPreRenderComplete)—》保存ControlState(SaveControlState)—》保存ViewState(SaveViewState)—》呈现(Render)—》Page_UnLoad。
OnPreInit:在初始化页面OnInit事件前触发。在这个阶段里,可以进行定义站点主题(Theme)或加载站点个性化所需要的数据信息等操作。
OnInitComplete:完成初始化页面OnInit事件后触发。
OnPreLoad:在加载页面OnLoad事件前触发。
OnLoadComplete:完成页面加载OnLoad事件后触发。
OnPreRenderComplete:在完成预呈现OnPreRender事件后触发。这是完成页面呈现的最后一道关卡,在此之后,页面将无法再进行任何呈现上的改动。
SaveControlState:保存控件状态ControlState。ControlState是ASP.NET2.0控件新增的一个属性,类似ViewState作用,但它们区别在于ControlState用于保存更加重要的控件状态信息,以保证在禁用ViewState的情况下还可以对控件状态进行读写操作。
增加对页面Header的控制:
System.Web.UI.Page类新增加了Header属性,用于对HTML页面头区域里数据的操作。通过对Header属性的跟踪,可以发现,Header属性保存着一个实现IPageHeader接口的对象(该对象有LinkedStyleSheets、Metadata、StyleSheet和Title四个属性),实际上正是通过这个对象实现对HTML页面头区域里数据的操作的。例如:
<script runat="server">
void Page_Load(object sender, System.EventArgs e)
{
this.Header.Metadata.Add("author", "brooks");
}
</script>

其运行结果为:
<html>
<head> <title>Untitled Page</title>
<meta name="author" content="brooks" />
</head>
定义表单中的默认按钮:
在ASP.NET1.0中,我就为了设置表单中的默认按钮而一筹莫展。幸好ASP.NET2.0把这个功能补上了,现在可以非常方便的设置表单中的默认按钮了。
<%@ page language="C#" %>
<script runat="server">
void Button1_Click(object sender, System.EventArgs e)
{
this.LB_Message.Text = "You clicked button1";
}
</script>
<html>
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form runat="server" defaultbutton="Button1">
<asp:textbox id="Textbox1" runat="server"></asp:textbox>
<asp:button id="Button1" runat="server" text="Button" onclick="Button1_Click" />
<asp:label id="LB_Message" runat="server"></asp:label>
</form>
</body>
</html>
设置焦点:
现在假设为TextBox1控件设置焦点,在ASP.NET 2.0中可以这样实现:
this.Textbox1.Focus(); 或 this.SetFocus(this.Textbox1); 即可为TextBox1控件设置焦点。
如果打算也为表单设置个默认焦点控件,让光标默认停留在TextBox1上:
<form runat="server" defaultfocus="TextBox1">
跨页面数据发送:
如果你需要多个页面发送数据到同一个表单程序进行处理,或者数据在多个页面之间传输处理的话,你就可以使用ASP.NET 2.0这个新特性。例如,我打算把Default.aspx页里TextBox1里的文本数据发送到Default2.aspx页面进行处理:
Default.aspx页:
<%@ Page Language="C#" %>
<script runat="server">
void Button2_Click(object sender, EventArgs e)
{
Label1.Text = "Hi," + TextBox1.Text + ". This is Default.aspx";
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>
<asp:Button ID="Button1" Runat="server" Text="PostToAnotherPage" PostBackUrl="~/Default2.aspx" />
<asp:Button ID="Button2" Runat="server" Text="PostToSelf" OnClick="Button2_Click" />
<br />
<asp:Label ID="Label1" Runat="server" Text="Label"></asp:Label>
</form>
</body>
</html>
Default2.aspx页:
<%@ Page Language="C#" %>
<script runat="server">
void Page_Load(object sender, System.EventArgs e)
{
TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");
this.Label1.Text = "Hi," + textBox1.Text + ". This is Default2.aspx!";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:label id="Label1" runat="se

时间: 2024-08-29 09:38:29

ASP.NET 2.0页面框架的几处变化的相关文章

ASP.NET 2.0页面框架的几处变化_XML/RSS

新增的页面事件: 在ASP.NET 2.0中,一个ASP.NET页面的生命周期主要为(红色字体表示ASP.NET 2.0新增加的阶段页面事件):客户端请求页面->预初始化(OnPreInit)->初始化(OnInit)->完成初始化(OnInitComplete)->载入ViewState(LoadViewState)->处理回送数据(IPostBackDataHandler)->Page_OnPreLoad->Page_OnLoad->回发更改通知(Rai

ASP.NET 2.0页面框架简要慨述

ASP.NET Web窗体页面框架组件是一个可缩放的通用语言运行时编程模型,它可以用于动态地生成Web页面.ASP.NET页面框架组件是ASP的合理进化(ASP.NET提供的语法与已有的页面是兼容的),它被特意地设计用于解决早期模型中的大量的关键的缺陷.特别是,它提供了建立和使用可供重复使用的(reusable)UI控件的能力,这些控件可以封装公用的功能,从而减少了页面开发者需要编写的代码数量:它使开发者能够清晰有序地构造页面逻辑(并非"缠绕在一起的代码"):它使用的开发工具提供了强大

ASP.NET 2.0页面性能的考虑

asp.net|性能|页面 一般情况下我们通常在一个页面中,结合页面事件处理模型,按顺序一步一步的声明各个处理过程.这就是所说的同步处理(Synchronous),我们可以很方便的定义页面处理的顺序.同步处理虽然很方便,但在耗时高请求处理的时候就会暴露严重的问题,在一个高并发的网站生产服务器上,由于.net处理是基于所谓的ThreadPool的,而Threadpool中的处理线程又是有限的,如果当前ThreadPool中的线程已经全部用尽,而后继又有不断的大规模请求的话,服务器的性能就会严重的下

ASP.NET 2.0 页面状态持续程序

asp.net|程序|页面 ASP.NET 控件的开发人员利用 ViewState 和控件状态来保持浏览器发出的各请求之间的状态信息.通常,该信息作为由页面呈现的 HTML 标记中的隐藏字段传送给客户端.然后,该页面状态作为下一个窗体提交的一部分传回服务器并还原给控件或页面.即使浏览器使用 HTTP 协议(该协议定义为无状态),但利用临时存储状态信息的功能,控件的开发人员能够轻松地提供更丰富的应用程序体验. ASP.NET 2.0 允许您修改临时保持页面状态的位置和方式.在某些情况下,避免在客户

ASP.NET 2.0页面状态持续程序

ASP.NET 控件的开发人员利用 ViewState 和控件状态来保持浏览器发出的各 请求之间的状态信息.通常,该信息作为由页面呈现的 HTML 标记中的隐藏字段 传送给客户端.然后,该页面状态作为下一个窗体提交的一部分传回服务器并还 原给控件或页面.即使浏览器使用 HTTP 协议(该协议定义为无状态),但利用临 时存储状态信息的功能,控件的开发人员能够轻松地提供更丰富的应用程序体验 . ASP.NET 2.0 允许您修改临时保持页面状态的位置和方式.在某些情况下, 避免在客户端与服务器之间往

求让ASP.NET 2.0 页面自动定时重新加载的办法!

问题描述 ASP.NET2.0页面,要求能按页面上用户在下拉框内选择的时间间隔,定时页面重新加载. 解决方案 解决方案二:<script>window.setTimeout("window.location.href='xxx.aspx'",1000)</script>解决方案三:会用到Session+Thread没做过,仅供参解决方案四:1楼的方法是客户端.要在服务器端可以用Timer解决方案五:3楼能给个例子吗?解决方案六:setTimeout("

ASP.NET 2.0 正式版中无刷新页面的开发(示例代码的补充)

asp.net|示例|刷新|无刷新|页面 原文请见Leon.Zhou的:http://pfzhou.cnblogs.com/archive/2006/03/31/363342.html 下载了示例代码,并转换成VB了,AJAX功能测试成功.但遇到些小问题:Demo1很正常.Demo2按Leon原来的写法testAJAX.aspx.vb中Line 22不成功.所以我直接在IDE环境中,修改button3的OnClientClick属性,见testAJAX.asp的Line 52.测试成功.Demo

理解并扩展 ASP.NET 2.0 中的站点导航系统

asp.net|导航|站点 摘要:ASP.NET 2.0 站点导航系统构建于一个功能强大.灵活的体系结构之上,设计这样的体系结构是为了使其具有可扩展性.本文探究站点提供程序的体系结构并提供一个示例提供程序,该提供程序将文件系统公开为站点导航的数据源,从而替代了标准的 Web.sitemap XML 文件. 简介 大多数 web 站点采用可视化导航的某种形式来帮助用户轻松地浏览站点,以及查找他们所需的信息和 Web 页.尽管不同站点之间的感观效果千差万别,但是通常会使用相同的基本元素 - 以导航栏

ASP.NET 2.0中的Web和HTML服务器控件

asp.net|web|服务器|控件 除了代码和标记之外,ASP.NET 2.0页面还可以包含服务器控件,它们是可编程的服务器端对象,典型情况下表现为页面中的UI元素(例如文本框或图像).服务器控件参与页面的执行过程,并给客户端生成自已的标记呈现内容.服务器控件的优势在于,它让开发者从简单的积木式的组件中获取复杂的呈现方式和操作行为,极大地减少了生成动态Web页面所需要编写的代码量:另外一个优势是,定制它们的呈现方式和行为非常简单.服务器控件所暴露的属性可以通过宣告式(在标记中)或编程(在代码中