.NET的页面处理过程

ASP.NET引入了“状态”,状态用于储存当前会话中当前用户的所有控件和变量的当前值的。网络本身是没有状态的,每次页面提交到服务器后,接着返回浏览器,该页面会重新创建一次。.NET引入了四种状态,从而使一切变得简单从容了起来。这四种状态是

*视图状态[ViewState]
*控件状态[ControlState]
*应用程序状态[Application_Start,.._End..,_Error...]
*会话状态[SessionState]

这个示例是以ViewState为主的,其中的一些思路很适合入门。

前台文件:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5.     <title>PageProcessingDemo</title>
  6. </head>
  7. <body>
  8.     <form id="form1" runat="server">
  9.     <div>
  10.     
  11.         <asp:Label ID="Label_Welcome" runat="server" Text="输入您的名字并选择最近去过的国家"></asp:Label>
  12.     
  13.         <br />
  14.         <br />
  15.     
  16.         <asp:TextBox ID="NameTextBox" runat="server"></asp:TextBox>
  17.     
  18.         <br />
  19.         <br />
  20.     
  21.         <asp:ListBox ID="CountryList" runat="server" SelectionMode="Multiple">
  22.         </asp:ListBox>
  23.     
  24.         <br />
  25.         <asp:Button ID="ThisYearButton" runat="server" Text="今年" CommandName="今年" 
  26.             οnclick="Button_Click" />
  27.          <asp:Button ID="LastYearButton" runat="server" Text="去年" CommandName="去年" 
  28.             οnclick="Button_Click" />
  29.     
  30.         <br />
  31.         <br />
  32.     
  33.         <asp:Label ID="ResultLabel" runat="server"></asp:Label>
  34.     
  35.         <hr />
  36.     
  37.     </div>
  38.     <asp:Label ID="TimeStampLable" runat="server" ></asp:Label>
  39.     <p>
  40.         <asp:Label ID="NowLabel" runat="server" ></asp:Label>
  41.     </p>
  42.     </form>
  43. </body>
  44. </html>

后台文件:

  1. using System;
  2. using System.Configuration;
  3. using System.Data;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.HtmlControls;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. public partial class _Default : System.Web.UI.Page 
  11. {
  12.     protected void Page_Load(object sender, EventArgs e)
  13.     {
  14.         if (!IsPostBack)//仅在第一次进入页面时加载;下面的数据或许来自数据库,或者来自WEB Service等等,为了节省资源与时间。
  15.         {
  16.             
  17.             CountryList.Items.Add("CHINA");
  18.             CountryList.Items.Add("US");
  19.             CountryList.Items.Add("UK");
  20.             CountryList.Items.Add("FRANCE");
  21.             CountryList.Items.Add("ITALY");
  22.             TimeStampLable.Text = "您访问该页的时间为:"+DateTime.Now.ToString();
  23.           
  24.         }
  25.         NowLabel.Text = "当前时间为:" + DateTime.Now.ToString();
  26.     }
  27.    
  28.     protected void Button_Click(object sender, EventArgs e)
  29.     {
  30.         string cmdName = ((Button)sender).CommandName;//前台中的两个Button共用一个事件Button_Click,并各自设置了自己的CommandName
  31.         ResultLabel.Text += string.Format("{0}{1}去过的国家有:</br>", NameTextBox.Text,cmdName);//string.Format的用法
  32.         foreach (ListItem item in CountryList.Items) //foreach的简单用法
  33.             if (item.Selected)
  34.             {
  35.                 ResultLabel.Text+="* "+ item.Value+"<br/>";
  36.             }
  37.         ResultLabel.Text += "<br/>";
  38.        
  39.     }
  40.     protected override void OnPreRender(EventArgs e)
  41.     {
  42.         base.OnPreRender(e);
  43.         NameTextBox.Text = string.Empty;
  44.         CountryList.SelectedIndex = -1;
  45.     }
  46.     protected override void OnUnload(EventArgs e)
  47.     {
  48.         base.OnUnload(e);
  49.     }
  50. }
  51. 该实例来源于 TotalTraining 的讲座,在Button_Click的CommandName取值的步骤上没有按照讲座的做法,原讲座的做法是:
  52. Button SenderButton =sender as Button;
  53. string yearmsg;
  54. if (SenderButton.CommandName=="在前台输入的CommandName")
  55. {
  56. .....
  57. }
  58. else....
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值