一 ASP.NET中有一常用的内置对象,当Web应用程序运行时,这些对象提供了丰富的功能,如维护Web服务器的活动状态,网页输入输出等。
常用的内置对象:
1.1 Page对象
在ASP.NET中,每个页面都派生自Page类,并继承这个类公开的所有方法和属性。
Page 类与扩展名为 .aspx 的文件相关联,这些文件在运行时被编译为 Page 对象,并被缓存在服务器内存中。
由于网页编译后所创建的类由Page派生而来,因此网页可以直接使用Page对象的属性、方法和事件。
1.2页面类的构造:
1.3 网页的生命周期:
当请求Web服务器上的一个ASP.NET网页时,这个网页就会被加载到Web服务器的内存中,经过处理后发送给用户,既从内存中卸载。这个过程称为网页的生命周期,它的目标就是为发送网页请求的浏览器呈现适当的HTML网页。
网页生命周期有两种稍微不同的顺序:一种是首次加载网页,另一种是在回传过程中再次加载网页。
在生命周期的每个阶段,都提供了可以使用的方法和事件,供程序开发人员来重写ASP.NET引擎的默认处理行为,或增加自己的处理逻辑。
1.4 ASP.NET 如何处理事件:
①当页面首次运行时,ASP.NET创建一个Page对象和一些控件对象,执行初始化代码,然后页面被渲染为HTML格式返回到客户端。
②当用户触发了页面回发(PostBack)时,通常是触发了某个事件,比如单击按钮事件,这时候页面将再次提交所有的表单数据到服务器端。
③ASP.NET获取返回的页面,并重新创建Page对象。
④ASP.NET检查是什么事件触发了PosBack,并响应相应的事件,这时候将执行开发人员编写的触发事件代码。
⑤页面将被渲染并返回到客户端,Page对象从内存中释放。
当@Page指令的AutoEventWireup属性被设置为true后,页面事件将自动绑定至使用“Page_事件”命名约定的方法,比如“Page_Init”、“Page_Load”。
1.5ASP.NET的网页生命周期:
1.6 Page对象的属性、方法和事件
http://www.w3school.com.cn/aspnet/prop_control_standard_page.asp
http://www.w3school.com.cn/aspnet/webpages_objects.asp
1.7 Page对象的使用:
例:使用IsPostBack属性
W1_7.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="W4_1_3.aspx.cs" Inherits="csweb1_W4_1_3" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>
<p><asp:Label ID="Label1" runat="server" Text="姓名"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></p>
<p> <asp:Button ID="Button1" runat="server" Text="提交" CssClass="m1" /></p>
<p>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> </p>
</div>
</div>
</form>
</body>
</html>
W1_7.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class csweb1_W4_1_3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
Label2.Text = TextBox1.Text + ":你已经提交";
else
Label2.Text = "没有提交";
}
}
2. Request对象:
Request对象的主要功能是从客户端获取数据。使用该对象可以访问任何HTTP请求传递的信息,包括使用POST方法或者GET方法传递的参数、cookie和用户验证。
2.2Request对象的属性与方法:
http://www.cnblogs.com/amber-liu/p/10000141.html
2.3 应用Request对象:
例:获取客户端信息
W2_3.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="w4_2_2.aspx.cs" Inherits="csweb1_w4_2_2" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<div class="minchine">
<p>
<asp:Label ID="Label3" runat="server" Text="机器名称:"></asp:Label>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</p>
<p>
<asp:Label ID="Label4" runat="server" Text="IP地址:"></asp:Label>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
</p>
<p>
<asp:Label ID="Label5" runat="server" Text="浏览器使用的语言:"></asp:Label>
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
</p>
</div>
</div>
</form>
</body>
</html>
W2_3.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class csweb1_w4_2_2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
TextBox2.Text = Request.UserHostName;
TextBox3.Text = Request.UserHostAddress;
TextBox4.Text = Request.UserLanguages[0];
}
}
例:通过Request对象获取传递的参数
在上网过程中,经常会发现网址后面跟一串字符,这就是通过URL后面的字符串在两个网页之间传递参数,QueryString属性保存这些参数和值。
w2_3_2.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="w4_2_2_2.aspx.cs" Inherits="csweb1_w4_2_2_2" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<div class="username">
<p>
<asp:Label ID="user" runat="server" Text="用户名:"></asp:Label>
<asp:TextBox ID="name" runat="server"></asp:TextBox>
</p>
<p>
<asp:Label ID="pass" runat="server" Text="密码"></asp:Label>
<asp:TextBox ID="password" runat="server" TextMode="Password"></asp:TextBox>
</p>
<p>
<asp:Label ID="message" runat="server" Text=""></asp:Label>
</p>
<p>
<asp:Button ID="submit" runat="server" Text="提交" οnclick="submit_Click" />
</p>
</div>
</div>
</form>
</body>
</html>
W2_3_2.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class csweb1_w4_2_2_2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["name"] != null)
{
message.Text = "用户名:" + Request.QueryString["name"] + " ;密码:" + Request.QueryString["password"];
}
}
}
3. Response对象
Response对象提供对当前页的输出流的访问,可以使用该对象将文本插入页中、设置Cookie的值和重定向浏览器到另一个URL等。
3.1 Respose对象的属性和方法:
http://www.php.cn/csharp-article-362980.html
3.2 应用Respose对象:
例:使用Write方法输出文本
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class csweb1_w4_2_2_2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("现在的时间是" + DateTime.Now.ToString());
Response.Write("<br />");
Response.Write("欢迎访问!");
}
}
4.Server对象
Server对象提供了访问服务器对象的方法和属性,可以获取服务器的信息,对HTML文本进行编码和解码等。
4.1 Server对象的属性和方法:
https://www.cnblogs.com/yeshuimaowei/p/9193463.html
4.2 应用Server对象
例:使用Transfer和Execute方法重定向页面
W4_2.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="csweb1.WebForm2" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>
<p>
<asp:Button ID="Button1" runat="server" Text="Button1" οnclick="Button1_Click" /></p>
<p>
<asp:Button ID="Button2" runat="server" Text="Button2"
οnclick="Button2_Click" /> </p>
</div>
</div>
</form>
</body>
</html>
W4_2.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace csweb1
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Server.Transfer("W2_3_2.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
{
Server.Execute("W2_3_2.aspx");
}
}
}
5 Cookie对象
Response和Request对象都有一个Cookies属性,它们是存放Cookie对象的集合。一个Cookies是一段文本信息,能随着用户请求和网页在Web服务器和浏览器之间传递。Cookie对象的信息保存在客户端。
在.NET框架中,Cookie对象是由HttpCookie类来实现的。
public HttpCookie(string name)
public HttpCookie(string name,string value)
通常使用Response对象的Cookies集合属性设置Cookie信息,使用Resquest对象的Cookies集合属性读取Cookie信息。
5.1 Cookie对象的属性
⑴ Name属性
通过Cookie的Name属性来指定Cookie的名称,Cookie是按名称保存的。
⑵ Value属性
Cookie的Value属性用来指定Cookie中保存的值,为字符串形式。
⑶ Expires属性
Cookie的Expires属性为DateTime类型,用来指定Cookie的过期日期和时间,即Cookie的有效期。如不给Cookie指定有效期,则会话的Cookie不会存入用户硬盘,在浏览器关闭后就被删除。
5.2 Cookie 对象的应用
例:保存用户信息
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="csweb1.WebForm3" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<p>
<asp:Label ID="Label1" runat="server" Text="用户名:"></asp:Label>
<asp:TextBox ID="Name" runat="server"></asp:TextBox>
</p>
<p>
<asp:Label ID="Label2" runat="server" Text="密码:"></asp:Label>
<asp:TextBox ID="Password" runat="server" type="password"></asp:TextBox>
</p>
<p>
<asp:Button ID="Button1" runat="server" Text="提交" οnclick="Button1_Click" /> </p>
</div>
</form>
</body>
</html>
6 Session对象
当用户请求一个ASP.NET网页时,系统将自动创建一个Session(会话),退出应用程序或关闭服务器时,该会话撤消。系统创建会话时将为其分配一个字符串标识(SessionID),以实现对会话进行管理和跟踪。Session对象是一个对象集合,且一个Sesson是针对某个特定用户的。
6.1 Sesson对象的属性和方法
https://www.cnblogs.com/wxy520/p/5318361.html
https://blog.csdn.net/qq_37855507/article/details/82589165
6.2 Session对象的应用
例: 利用Session实现用户登录的验证
W6.2.1.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4_6_1.aspx.cs" Inherits="csweb1.WebForm4_6_1" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<p>
<asp:Label ID="Label1" runat="server" Text="用户名:"></asp:Label>
<asp:TextBox ID="Name" runat="server"></asp:TextBox>
</p>
<p>
<asp:Label ID="Label2" runat="server" Text="密码:"></asp:Label>
<asp:TextBox ID="Password" runat="server" type="password" TextMode="Password"></asp:TextBox>
</p>
<p>
<asp:Label ID="Label3" runat="server" Text="未登录"></asp:Label> </p>
<p>
<asp:Button ID="Button1" runat="server" Text="提交" οnclick="Button1_Click" /> </p>
<p>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/WebForm4_6_2.aspx">第二个页面</asp:HyperLink></p>
</div>
</form>
</body>
</html>
w6.2.1.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace csweb1
{
public partial class WebForm4_6_1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserName"] == null)
{
Label3.Text = "未登录";
}
/*
if (Session["UserName"] != null) {
Response.Redirect("Webform4_6_2.aspx");
}
*/
}
protected void Button1_Click(object sender, EventArgs e)
{
if ("zixuan" == Name.Text && "123" == Password.Text) {
Session["UserName"] = Name.Text;
Label3.Text = Session["UserName"] + ",已登录";
}
}
}
}
W6.2.2.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4_6_2.aspx.cs" Inherits="csweb1.WebForm4_6_2" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<p>
<asp:Label ID="Label1" runat="server" Text=""></asp:Label></p>
<p>
<asp:Button ID="Button1" runat="server" Text="返回登录页面" οnclick="Button1_Click" /></p>
<p>
<asp:Button ID="Button2" runat="server" Text="退出登录" οnclick="Button2_Click" /></p>
</div>
</form>
</body>
</html>
w6.2.2.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace csweb1
{
public partial class WebForm4_6_2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserName"] != null)
{
Label1.Text = "你好," + Session["UserName"];
Button1.Visible = false;
}
else {
Label1.Text = "未登录";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Webform4_6_1.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
{
if (Session["UserName"] != null) {
Session.Remove("UserName");
}
}
}
}
7 Application对象
Application对象是运行在Web应用服务器上的虚拟目录及其子目录下所有文件、网页、模块和可执行代码的总和。一旦网站服务器被打开,就创建了Application对象,所有的用户共用一个Application对象,并可以对其进行修改。网站设计者利用Application可以方便地创建诸如聊天室和网站计数器等常用Web应用程序。
Application对象是一个对象集合,可以看作是存储信息的容器,为所有用户共享。
7.1 Application对象的属性和方法
https://www.cnblogs.com/ahao214/archive/2013/01/09/2852488.html
7.2 应用Application对象
例:设计一个简单聊天功能的网页
w7.2.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="login2.aspx.cs" Inherits="login2" %>
<!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>
<link href="css/bootstrap.css" rel="Stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<!--ctrl +j 提示-->
<div class="container mt-5" style="width:400px;">
<div class="card">
<div class="card-header text-center">
用户登录
</div>
<div class="card-body">
<div class="form-group">
<label>用户名:</label>
<asp:TextBox ID="userName" runat="server" CssClass="form-control"></asp:TextBox>
</div>
<div class="form-group">
<label>密码:</label>
<asp:TextBox ID="passWord" runat="server" CssClass="form-control" TextMode="Password"></asp:TextBox>
</div>
<div class="form-group text-center">
<asp:Button ID="btnSubmit" runat="server" Text="登录"
CssClass="btn btn-secondary" οnclick="btnSubmit_Click"/>
<asp:Button ID="btn" runat="server" Text="退出" CssClass="btn btn-secondary"/>
</div>
</div>
</div>
</div>
</form>
</body>
</html>
w7.2.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class login2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (userName.Text.Trim() != null) {
Session["UserName"] = userName.Text;
Session["UserColor"] = GetRandomColor();
Response.Redirect("~/ChatView2.aspx");
}
}
//生成随机颜色
private string GetRandomColor() {
Random randomNum = new Random((int)DateTime.Now.Ticks);
string[] color = { "Purple", "Red", "Bule", "SeaGreen", "Olive", "Orange" };
return color[randomNum.Next(color.Length)];
}
}