您的位置:首页 > 编程语言 > ASP

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页面代码:

<%@ 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 = "数据已保存,欢迎使用此演示功能!";
}
}


页面效果为:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: