MS.Tech - IT人

.NET & 微软企业服务器 & 前沿技术和产品
随笔 - 107, 评论 - 1269, 引用 - 87

导航

关于

所有内容和观点仅代表个人观点,如有问题和建议请发Email给我。

标签

每月存档

最新留言

广告

 
  1. 新增的页面事件
    在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的情况下还可以对控件状态进行读写操作。
  2. 增加对页面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>
  3. 定义表单中的默认按钮:
    在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>
  4. 设置焦点
    现在假设为TextBox1控件设置焦点,在ASP.NET 2.0中可以这样实现:
    this.Textbox1.Focus();  this.SetFocus(this.Textbox1); 即可为TextBox1控件设置焦点。
    如果打算也为表单设置个默认焦点控件,让光标默认停留在TextBox1上:
    <form runat="server" defaultfocus="TextBox1">
  5. 跨页面数据发送
    如果你需要多个页面发送数据到同一个表单程序进行处理,或者数据在多个页面之间传输处理的话,你就可以使用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="server"></asp:label>
       
    </form>
    </body>
    </html>

打印 | 张贴于 2004-09-09 02:53:00 | Tag:ASP.NET  VS2005(Whidbey)

留言反馈

#回复: ASP.NET 2.0页面框架的几处变化 编辑
能不能举个详细点的例子?
这样不是很清楚.
2007-03-15 16:26:00 | [匿名:大石]
#re: ASP.NET 2.0页面框架的几处变化 编辑
哦,原来 Daniel 想告诉我们 http协议 和asp.net 2.0没有关系。
2006-08-24 18:43:00 | [匿名:随意]
#页面框架求救net 2.0 编辑
<iframe id='main' runat="server" src="admin_right.aspx" style="left:-79px ; top: 3px; visibility: visible; width: 607px; height: 631px;" frameborder="0" ></iframe>(这是首页内嵌页)



<asp:TreeNodeBinding DataMember="新闻" NavigateUrl="~/home.aspx" Text="新闻" Value="新闻" Target="main" />

这里是用TARGET属性指定home.aspx页面显示在内嵌页<iframe id="main">的位置,1.1的时候可以。怎么到2.0就不可以了
2006-06-21 08:08:00 | [匿名:yezhen]
#re: ASP.NET 2.0页面框架的几处变化 编辑
# re: ASP.NET 2.0页面框架的几处变化 2004-9-9 7:53 xinyu
跨页面数据传送能带来更多的惊喜与便捷...

# re: ASP.NET 2.0页面框架的几处变化 2005-11-11 19:47 Davi Fan
对于页面间的数据传递,我发现如果使用Server.Transfer(“Default2.aspx”).使用PreviousPage同样可以获取到第一个页面的控件,请问这两种方式有什么区别?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这样的问题真是搞笑,什么叫“跨页面数据传送”?被微软把你们的脑袋都变成装满了屎了,像你们这样的垃圾还写什么代码哦,真是一群可怜的人,有空看看HTTP协议吧,这个和微软的asp.net 2.0没有任何关系!
2006-01-24 10:30:00 | [匿名:Daniel]
#re: ASP.NET 2.0页面框架的几处变化 编辑
对于页面间的数据传递,我发现如果使用Server.Transfer(“Default2.aspx”).使用PreviousPage同样可以获取到第一个页面的控件,请问这两种方式有什么区别?
2005-11-11 19:47:00 | [匿名:Davi Fan]
#采用下面方法防止传输的目标网页出现错误 编辑
If Me.PreviousPage IsNot Nothing Then
Dim obj As Object = Me.PreviousPage.FindControl("txtSendText")
If obj IsNot Nothing Then
Dim txtSendText As TextBox = CType(obj, TextBox)
Me.txtInfo.Text = txtSendText.Text
End If
End If
2005-08-24 16:18:00 | [匿名:许明会]
#re:ASP.NET 2.0页面框架的几处变化 编辑
ASP.NET 2.0页面框架的几处变化ooeess
2005-06-08 17:10:00 | [匿名:皮带张力计]
#re:ASP.NET 2.0页面框架的几处变化 编辑
^_~,pretty good!csharpsseeoo
2005-05-13 20:40:00 | [匿名:拉伸仪]
#re:ASP.NET 2.0页面框架的几处变化 编辑
^_~,pretty good!18showsseeoo
2005-04-26 16:11:00 | [匿名:数据采集分析软件]
#re: ASP.NET 2.0页面框架的几处变化 编辑
ASP.ET 2.0中的QueryString到底是怎样把数据传过去的,很想知道内部技术
2005-04-16 09:36:00 | [匿名:郁闷之人]
#re:ASP.NET 2.0页面框架的几处变化 编辑
^_^,Pretty Good!
2005-04-10 19:47:00 | [匿名:烟雾探测器]
#re: ASP.NET 2.0页面框架的几处变化 编辑
由vs2003~vs2005带给你的是生产力实实在在的飞跃吗?
2005-03-19 22:34:00 | [匿名:microhf]
#re: ASP.NET 2.0页面框架的几处变化 编辑
虽然增加了很多功能,但是最重要的Form或者说InputControlCollection还是没有。

对于页面表单而言,如果有InputControlCollection的概念的话,会会简单许多。例如跨页面传送,只需要扔InputControlCollection给另一个页面而不是整个页面的数据,无论在程序代码安全还是其他方面都要好得多。

并且两个页面可以对InputControlCollection制定一个契约,或者干脆定义一个接口。所有的InputControlCollection从InputControlCollection基类继承。

WebControls还是要放在Server Form中,看来微软时非要把Server Form进行到底啊。
2005-01-29 14:07:00 | [匿名:Ivony]
#re: ASP.NET 2.0页面框架的几处变化 编辑
直接运行Default2.aspx将会出错,因为Default1.aspx中的数据没有及时传给Default2,怎么解决?
2005-01-11 14:40:00 | [匿名:jamydown]
#re: ASP.NET 2.0页面框架的几处变化 编辑
TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");

我也觉得这样增加了数据传输量,直接用querystring或form变量挺好的。
2005-01-04 17:11:00 | [匿名:lxy]
#re: ASP.NET 2.0页面框架的几处变化 编辑
TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
偶感觉这无疑增加了页面之间的耦合程度。一个页面竟然要关心另外一个页面中控件的name。
2005-01-01 17:07:00 | [匿名:BinaryPoet]
#re: ASP.NET 2.0页面框架的几处变化 编辑
我们需要做的只是拖拉控件,改改属性,都是垃圾
2004-10-29 01:10:00 | [匿名:Dot]
#re: ASP.NET 2.0页面框架的几处变化 编辑
GOOD! /:)
2004-09-10 00:34:00 | [匿名:laily]
#re: ASP.NET 2.0页面框架的几处变化 编辑
如此漂亮的代码,用RSS Feed软件看都变成了黑色。若可能的话博客堂可以调整一下现有的聚合功能。
2004-09-09 21:53:00 | [匿名:Ninputer]
#re: ASP.NET 2.0页面框架的几处变化 编辑
不错啊,感觉增加的功能都挺实用的
2004-09-09 10:53:00 | [匿名:fking]
#re: ASP.NET 2.0页面框架的几处变化 编辑
为什么会说QueryString会消失呢?

即便在2.0,新闻列表页面要显示Detail的时候还是用个QueryString["id"]比较好吧

额感觉是2.0相比1.0更加简洁 条理 清晰
看了2.0再看1.0就会觉得比较芜杂
2004-09-09 10:11:00 | [匿名:dayday]
#re: ASP.NET 2.0页面框架的几处变化 编辑
那querystring不是要没人用了么
2004-09-09 09:38:00 | [匿名:spider]
#re: ASP.NET 2.0页面框架的几处变化 编辑
thank you.
2004-09-09 09:05:00 | [匿名:jiangyu]
#re: ASP.NET 2.0页面框架的几处变化 编辑
好文章,学习
希望多些asp.Net 2.0的文章
2.0快点来吧!
2004-09-09 08:52:00 | [匿名:Hover]
#re: ASP.NET 2.0页面框架的几处变化 编辑
ControlState和跨页面数据发送是个好东东
2004-09-09 08:51:00 | [匿名:dali]
#re: ASP.NET 2.0页面框架的几处变化 编辑
跨页面数据传送能带来更多的惊喜与便捷...
2004-09-09 07:53:00 | [匿名:xinyu]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.2.0