ASP.NET学习笔记二 系统对象与状态管理
2009-11-19 10:24
841 查看
第二课: 系统对象与状态管理
aspx页面 继承 System.Web.UI.Page类
aspx 运行机制如下:
Page对象:指向页面自身的方式,作用域为页面执行期
1) 每一个aspx页面对应着一个Page对象
2) .aspx与后台代码类(局部类)合并生成页面类
3) Page对象是页面类的实例
个人看法:在Page对象作用域内,是不是有点像this的用法,指代当前的页面对象;如果你也认同,那么Page可以省略了,哈哈!
Page指令:<%@page %> 每个页面只能有一个Page指令
Language -- 代表隐藏代码文件所使用的语言(只能是.net framework 2.0 支持的语言)
AutoEventWireup -- 是否自动调用网页事件,如Page_Load事件,若设置为false,将不会被执行,默认为true
CodeFile -- 对应隐藏文件的文件名
Inherits -- 代码后置的类,局部类
文本框(TextBox)三种文本模式(TextMode):Singline(默认)|MultiLine(多行文本)|Password(密码)
Get方式页面间传值:
传值页:Response.Redirect("target.aspx?name="+txtUserName.Text+"&pwd="+txtPwd.Text);
接收页:String name = Request.QueryString["name"];
String pwd = Request.QueryString["pwd"];
页内传值 Page.IsPostBack
该属性值为true时,表示是服务器回传页面,为false时,表示是首次加载
具有页面回传功能的控件有三个
1) Button 2) LinkButton 3) ImageButton
当然,它位有一个共同的属性就是 PostBackUrl属性,指的是回传的地址,如果设为其它url,将跳到相应页面
~/ : 网站根目录的相对路径
Page.PreviousPage 返回值为Page对象, 获取向当前页面传输数据的页面
Page.IsCrossPagePostBack 返回值为boolean ,指示跨页回发是否包含访页面
FindControl方法可用于页面查找控件
通常使用:
if(PreviousPage!=null && PreviousPage.IsCrossPagePostBack)
{
TextBox tb = PreviousPage.FindControl("txtContent") as TextBox;
}
实例:页面传值,通过ASP.net的源页面PreviousPage属性和查找控件的方法来获取值。
Login.aspx页面代码:
页面效果:
DoLogin.aspx页面
后置页面代码 DoLogin.aspx.cs 为:
页面效果为:
aspx页面 继承 System.Web.UI.Page类
aspx 运行机制如下:
Page对象:指向页面自身的方式,作用域为页面执行期
1) 每一个aspx页面对应着一个Page对象
2) .aspx与后台代码类(局部类)合并生成页面类
3) Page对象是页面类的实例
个人看法:在Page对象作用域内,是不是有点像this的用法,指代当前的页面对象;如果你也认同,那么Page可以省略了,哈哈!
Page指令:<%@page %> 每个页面只能有一个Page指令
Language -- 代表隐藏代码文件所使用的语言(只能是.net framework 2.0 支持的语言)
AutoEventWireup -- 是否自动调用网页事件,如Page_Load事件,若设置为false,将不会被执行,默认为true
CodeFile -- 对应隐藏文件的文件名
Inherits -- 代码后置的类,局部类
文本框(TextBox)三种文本模式(TextMode):Singline(默认)|MultiLine(多行文本)|Password(密码)
Get方式页面间传值:
传值页:Response.Redirect("target.aspx?name="+txtUserName.Text+"&pwd="+txtPwd.Text);
接收页:String name = Request.QueryString["name"];
String pwd = Request.QueryString["pwd"];
页内传值 Page.IsPostBack
该属性值为true时,表示是服务器回传页面,为false时,表示是首次加载
具有页面回传功能的控件有三个
1) Button 2) LinkButton 3) ImageButton
当然,它位有一个共同的属性就是 PostBackUrl属性,指的是回传的地址,如果设为其它url,将跳到相应页面
~/ : 网站根目录的相对路径
Page.PreviousPage 返回值为Page对象, 获取向当前页面传输数据的页面
Page.IsCrossPagePostBack 返回值为boolean ,指示跨页回发是否包含访页面
FindControl方法可用于页面查找控件
通常使用:
if(PreviousPage!=null && PreviousPage.IsCrossPagePostBack)
{
TextBox tb = PreviousPage.FindControl("txtContent") as TextBox;
}
实例:页面传值,通过ASP.net的源页面PreviousPage属性和查找控件的方法来获取值。
Login.aspx页面代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>用户登录页面</title> <mce:style type="text/css"><!-- body{background:url(images/moduleBg.gif) repeat;} #pageContent{text-align:center;} table,tr,td{text-align:left;border:1px solid #888;border-collapse:collapse;margin:0;padding:3px;} .tdCenter{text-align:left;margin-left:20px;padding-left:0px;width:200px;padding:0;} .txtClass{line-height:28px;width:200px;height:30px;margin:-1px;padding:0;border:1px solid #eee;vertify-align:middle;} --></mce:style><style type="text/css" mce_bogus="1"> body{background:url(images/moduleBg.gif) repeat;} #pageContent{text-align:center;} table,tr,td{text-align:left;border:1px solid #888;border-collapse:collapse;margin:0;padding:3px;} .tdCenter{text-align:left;margin-left:20px;padding-left:0px;width:200px;padding:0;} .txtClass{line-height:28px;width:200px;height:30px;margin:-1px;padding:0;border:1px solid #eee;vertify-align:middle;} </style> </head> <body> <form id="form1" runat="server"> <div id="pageContent"> <table width="360px"> <tr> <td colspan="2" style="text-align:center;background:#bbb;color:#fff;" mce_style="text-align:center;background:#bbb;color:#fff;">注册新用户</td> </tr> <tr> <td>用户名:</td> <td class="tdCenter"><asp:TextBox ID="txtUserName" runat="server" CssClass="txtClass"></asp:TextBox></td> </tr> <tr> <td>密码:</td> <td class="tdCenter"> <asp:TextBox ID="txtPwd1" runat="server" TextMode="Password" CssClass="txtClass"></asp:TextBox></td> </tr> <tr> <td>确认密码:</td> <td class="tdCenter"> <asp:TextBox ID="txtPwd2" runat="server" TextMode="Password" CssClass="txtClass"></asp:TextBox></td> </tr> <tr> <td>电子邮件:</td> <td class="tdCenter"> <asp:TextBox ID="txtEmail" runat="server" CssClass="txtClass"></asp:TextBox></td> </tr> <tr> <td>密码问题:</td> <td class="tdCenter"> <asp:TextBox ID="txtQuestion" runat="server" CssClass="txtClass"></asp:TextBox></td> </tr> <tr> <td>问题答案:</td> <td class="tdCenter"> <asp:TextBox ID="txtAnswer" runat="server" CssClass="txtClass"></asp:TextBox></td> </tr> <tr> <td colspan="2" style="text-align:center;" mce_style="text-align:center;"> <asp:Button ID="btnSend" runat="server" Text="提交" PostBackUrl="~/dologin.aspx" /></td> </tr> </table> </div> </form> </body> </html>
页面效果:
DoLogin.aspx页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DoLogin.aspx.cs" Inherits="TargetPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>无标题页</title> <mce:style type="text/css"><!-- *{font-size:14px;text-align:center;} table,tr,td{border:1px solid #aaa;border-collapse:collapse;padding:5px;margin:0;text-align:center;} table{background:url(images/bg2.jpg) repeat-y;width:450px;text-align:left;} --></mce:style><style type="text/css" mce_bogus="1"> *{font-size:14px;text-align:center;} table,tr,td{border:1px solid #aaa;border-collapse:collapse;padding:5px;margin:0;text-align:center;} table{background:url(images/bg2.jpg) repeat-y;width:450px;text-align:left;} </style> </head> <body> <form id="form1" runat="server"> <div id="pageBody"> <table> <tr> <td style="background: url(images/thbg.gif); font: bold 15px 黑体 22px;margin:0;padding:5px;" mce_style="background: url(images/thbg.gif); font: bold 15px 黑体 22px;margin:0;padding:5px;">确认用户信息</td> </tr> <tr> <td style="text-align:left;margin-left:50px;padding-left:50px;height:180px;"> <asp:Label ID="lblShow" runat="server" Text=""></asp:Label> </td> </tr> <tr> <td> <asp:Button ID="btnConfirm" runat="server" Text="确定" OnClick="btnConfirm_Click" /> <asp:Button ID="btnReback" runat="server" Text="返回" PostBackUrl="~/Login.aspx" /> </td> </tr> </table> </div> </form> </body> </html>
后置页面代码 DoLogin.aspx.cs 为:
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Drawing; public partial class TargetPage : System.Web.UI.Page { /// <summary> /// 页面加载事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) //非回传页 { if (Page.PreviousPage != null && Page.PreviousPage.IsCrossPagePostBack) { String userName = GetTextBoxValue("txtUserName"); String userPwd = GetTextBoxValue("txtPwd1"); String userPwd2 = GetTextBoxValue("txtPwd2"); String email = GetTextBoxValue("txtEmail"); String question = GetTextBoxValue("txtQuestion"); String answer = GetTextBoxValue("txtAnswer"); String info = String.Format("您填写的信息如为:<br>姓名为:{6}{0}{7}密码为:{6}{1}{7}" + "重置密码为:{6}{2}{7}电子邮件为:{6}{3}{7}问题为:{6}{4}{7}" +"问题答案为:{6}{5}{7}", userName, userPwd, userPwd2, email, question, answer, "<font color='#ff0000'>", "</font><br>"); this.lblShow.Text = info; } else { this.lblShow.ForeColor = Color.Red; this.lblShow.Text = "错误的请求方式,点<a href="login.aspx" mce_href="login.aspx">这里</a>进入"; } } else //回传 { this.lblShow.ForeColor = Color.Red; this.lblShow.Text = "请到登录页面,点<a href="login.aspx" mce_href="login.aspx">这里</a>进入"; } } /// <summary> /// 根据控件id,查询文本框的内容文本 /// </summary> /// <param name="id"></param> /// <returns></returns> public string GetTextBoxValue(string id) { //根据id,将相应的控件转成文本框 Control c = Page.PreviousPage.FindControl(id) ; if (c is TextBox) return (c as TextBox).Text; else //其它情况返回空字符串,表示根据id查询结果非文本框或没有 return ""; } /// <summary> /// 提交数据到数据库操作,这里显示一个消息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnConfirm_Click(object sender, EventArgs e) { this.lblShow.Text = "数据已保存,欢迎使用此演示功能!"; } }
页面效果为:
相关文章推荐
- ASP.NET学习笔记三 : 系统对象与状态管理(二)
- ASP.NET学习笔记 ---系统对象与状态管理
- Asp.net控件开发学习笔记-Asp.net客户端状态管理
- ASP.NET 2.0 状态管理 学习笔记( 二)
- 第四讲 ASP.NET系统对象和状态管理(三)
- ASP.net(1.1)原理学习笔记--第十章 状态管理State Management
- ASP.NET系统对象与状态管理
- Asp.net控件开发学习笔记(五)---Asp.net客户端状态管理
- Asp.net控件开发学习笔记(五)---Asp.net客户端状态管理
- ASP.NET系统对象与状态管理
- 第二讲 ASP.NET系统对象和状态管理(一)
- 第五讲 ASP.NET系统对象和状态管理(四)
- [ASP.NET学习笔记之十九]ASP.NET状态管理
- 2010.05.23 学习asp.net对象和状态管理
- ASP.NET 2.0 状态管理 学习笔记(一)
- 第六讲 ASP.NET系统对象和状态管理(五)
- Asp.net控件开发学习笔记(四)---Asp.net服务端状态管理
- ASP.NET 3.5核心编程学习笔记(35):会话状态的自定义管理
- 【转】Asp.net控件开发学习笔记整理篇--Asp.net服务端状态管理
- Asp.NET系统状态与对象管理