ASP.NET实践教程(第2版) 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线

ASP.NET实践教程(第2版)精美图片
》ASP.NET实践教程(第2版)电子书籍版权问题 请点击这里查看《

ASP.NET实践教程(第2版)书籍详细信息

  • ISBN:9787302454236
  • 作者:暂无作者
  • 出版社:暂无出版社
  • 出版时间:2017-01
  • 页数:暂无页数
  • 价格:35.60
  • 纸张:胶版纸
  • 装帧:平装-胶订
  • 开本:16开
  • 语言:未知
  • 丛书:暂无丛书
  • TAG:暂无
  • 豆瓣评分:暂无豆瓣评分
  • 豆瓣短评:点击查看
  • 豆瓣讨论:点击查看
  • 豆瓣目录:点击查看
  • 读书笔记:点击查看
  • 原文摘录:点击查看

内容简介:

本书采用C#语言作为ASP.NET Web应用程序的开发语言,以Visual Studio为开发平台,通过简单实用的实例全面介绍使用ASP.NET进行Web程序开发的常用技术。本书第1~7章主要介绍ASP.NET的基础知识、ASP.NET的内置对象、Web服务器控件、验证控件、网页布局技术、Web数据库编程基础等内容;第8~11章介绍网站设计中几个常用的功能模块,包括注册登录模块、在线投票模块、留言板模块、文件上传下载模块等;第12章介绍一个综合的ASP.NET应用开发案例。

本书可作为高等院校计算机相关专业的教材,也可供具有一定编程经验又需要迅速熟悉ASP.NET的读者参考,同时也适合自学ASP.NET的读者阅读。


书籍目录:

目    录

 

第1章  新手入门          1

1.1  网站发展历史        1

1.1.1 

静态页面和动态页面         1

1.1.2 

ASP.NET简介       3

1.1.3 

C/S模式和B/S模式   4

1.2 

.NET框架       5

1.2.1 

公共语言运行库         5

1.2.2 

.NET框架类库    5

1.3 

Visual Studio开发环境  6

1.3.1 

Visual Studio的安装   6

1.3.2 

Visual Studio开发环境介绍       7

1.3.3 

Visual Studio主界面介绍   11

1.4  创建个ASP.NET应用程序     12

1.5 

aspx文件和aspx.cs文件      16

1.6  发布和部署网站   20

1.6.1 

发布网站    20

1.6.2 

IIS的安装与配置        22

小结         25

习题         25

第2章  ASP.NET语言基础   27

2.1 

C#语言基础   27

2.1.1 

数据类型    27

2.1.2 

标识符         28

2.1.3 

常量和变量         28

2.1.4 

运算符和运算符表达式    29

2.1.5 

流程控制语句    30

2.1.6 

面向对象的知识         33

2.2 

XHTML标记语言   38

2.2.1 

XHTML的基本结构    38

2.2.2 

头标签    39

2.2.3 

其他常用标签    40

2.2.4 

表格    41

2.3 

CSS简介          42

2.3.1 

CSS 的三种样式         43

2.3.2 

CSS的基础语法 43

2.4 

DIV CSS布局          45

2.4.1 

拐角型页面的设计    45

2.4.2 

用户登录页面的设计         48

2.5  实战:猜数游戏   50

小结         59

习题         59

第3章  ASP.NET内置对象   62

3.1 

ASP.NET 内置对象概述         62

3.2 

Page对象       62

3.2.1 

IsPostBack属性 63

3.2.2 

Init事件      63

3.2.3 

Load事件    63

3.2.4 

ClientScript属性          66

3.3 

Response对象       67

3.3.1 

输出数据(Write方法)         68

3.3.2 

地址重定向(Redirect方法)        68

3.3.3 

停止输出(End方法)   69

3.4 

Request对象 71

3.4.1 

从浏览器获取数据    72

3.4.2 

读取客户端的信息    75

3.5 

Server对象    76

3.5.1 

HtmlEncode方法和HtmlDecode

方法         76

3.5.2 

UrlEncode方法和UrlDecode

方法         77

3.5.3 

MapPath方法     79

3.6 

Application对象     79

3.6.1 

利用Application对象存取

信息         80

3.6.2 

锁定Application对象         81

3.6.3 

删除Application中的信息         81

3.7 

Session对象  81

3.8 

Cookie对象    84

3.9  实战1:统计网站在线人数         85

3.10 

实战2:用户登录       87

小结         90

习题         90

第4章  Web服务器控件     92

4.1 

HTML标记、HTML控件和

Web控件         92

4.2 

HTML控件概述     94

4.3 

Web控件概述        96

4.4  基本控件        97

4.4.1 

Button控件         97

4.4.2 

Label控件   97

4.4.3 

TextBox控件       97

4.5  选择控件        100

4.5.1 

CheckBox控件和CheckBoxList

控件         100

4.5.2 

RadioButton控件和

RadioButtonList控件      102

4.6  列表控件        105

4.6.1 

ListBox控件        105

4.6.2 

DropDownList控件    108

4.7  高级控件        110

4.7.1 

Calendar控件     110

4.7.2 

AdRotator控件  114

4.7.3 

MultiView控件和View

控件         116

4.7.4 

ScriptManager控件和

UpdatePanel控件   118

4.8  实战:用户注册页面   121

小结         129

习题         129

第5章  验证控件          131

5.1  验证控件概述        131

5.2 

RequiredFieldValidator控件的功能

和使用     132

5.3 

CompareValidator控件的功能

和使用     134

5.4 

RangeValidator控件的功能

和使用     136

5.5 

RegularExpressionValidator控件的

功能和使用     138

5.6 

CustomValidator控件的功能

和使用     140

5.7 

ValidatorSummary控件的功能

和使用     141

小结         143

习题         143

第6章  网页布局技术          145

6.1 

ASP.NET用户控件 145

6.2  母版页和内容页   150

6.3  导航控件        154

小结         157

习题         157

第7章  Web数据库编程基础     159

7.1 

SQL语言         159

7.1.1 

SQL数据查询语句      159

7.1.2 

SQL数据操纵语句      163

7.2 

ADO.NET概述        164

7.2.1 

.NET数据提供程序    164

7.2.2 

ADO.NET数据库应用程序的

开发流程         165

7.3 

Connection对象    165

7.3.1 

创建Connection对象         165

7.3.2 

Connection对象的方法

和事件     166

7.4 

Command对象      167

7.4.1 

创建Command对象  167

7.4.2 

Command对象的属性

和方法     167

7.5 

DataReader对象   168

7.5.1 

创建DataReader对象       168

7.5.2 

DataReader对象的属性

和方法     168

7.6 

DataAdapter对象和DataSet对象       171

7.6.1 

DataSet对象       171

7.6.2 

DataAdapter对象       172

7.7  插入、编辑和删除数据        175

7.8  数据绑定        182

7.9  数据控件        184

7.9.1 

SqlDatasource控件    184

7.9.2 

GridView控件     190

7.9.3 

DetailsView控件         197

7.9.4 

DataList控件      199

7.9.5 

Repeater控件    204

7.10 

配置文件Web.config  206

7.11 

程序调试      209

小结         212

习题         212

第8章  注册登录模块          214

8.1  设计思想        214

8.2 

ASP.NET的图像处理      215

8.3  注册登录模块的实现过程   218

8.3.1 

用户登录模块设计    218

8.3.2 

用户注册模块设计    227

8.3.3 

修改密码模块设计    231

小结         234

习题         234

第9章  在线投票模块          236

9.1 

XML文档        236

9.1.1 

XML的特点         236

9.1.2 

XML文档的基本结构         238

9.1.3 

创建XML文档   239

9.1.4 

XML的应用         239

9.2  在线投票模块设计思想        245

9.3  在线投票模块的实现   245

9.3.1 

投票页面的设计         245

9.3.2 

投票结果显示页面的设计         248

9.3.3 

以数据库存储投票结果    250

小结         252

习题         252

第10章  留言板模块   254

10.1 

留言板模块设计思想 254

10.2 

数据库设计 255

10.3 

留言板模块的实现      256

10.3.1 

母版页的设计  256

10.3.2 

index.aspx页面的设计    258

10.3.3 

查看留言页面的设计       264

10.3.4 

管理留言  269

小结         277

习题         277

第11章  文件上传下载模块       279

11.1 

文件上传下载的设计思想 279

11.2 

设计前的准备      280

11.2.1 

FileUpLoad服务器控件    280

11.2.2 

System.IO命名空间          281

11.2.3 

Response对象 281

11.3 

上传文件至服务器      282

11.4 

从服务器下载文件      285

11.5 

上传图片至数据库      287

11.5.1 

保存图片路径  287

11.5.2 

保存图片数据  291

小结         296

习题         296

第12章  BBS论坛系统        298

12.1 

设计思路      298

12.2 

设计前的准备      299

12.2.1 

引入第三方组件

 FreeTextBox  299

12.2.2 

多层架构设计  302

12.3 

数据库设计 303

12.4 

设计实体(Model)层     305

12.5 

设计数据访问(DAL)层         311

12.5.1 

SQLHelper类     312

12.5.2 

UserDAL类        317

12.5.3 

ModuleDAL类  322

12.5.4 

PostDAL类        325

12.5.5 

ReplayDAL类    328

12.6 

设计业务逻辑(BLL)层 331

12.7 

主要功能界面(Web UI层)的实现       333

12.7.1 

设计母版页       334

12.7.2 

首页Index.aspx的实现

  过程     335

12.7.3 

帖子管理的实现过程       337

12.7.4 

用户管理的实现过程       352

12.7.5 

版块管理的实现过程       361

小结         365

习题         365

参考文献         367


作者介绍:

暂无相关内容,正在全力查找中


出版社信息:

暂无出版社相关信息,正在全力查找中!


书籍摘录:

第3章  ASP.NET内置对象

  本章将详细介绍ASP.NET的常用内置对象,主要包括Page对象、Response对象、Request对象、Server对象、Application对象等。这些对象是用.NET框架中封装好的类来实现的,在ASP.NET页面初始化时,这些对象就已经自动创建了,故在程序中可以直接使用,不需要再实例化。这些内置对象为Web编程提供了丰富的功能,本章将重点介绍这些内置对象的主要用途和使用方法。

本章学习目标:

* 了解ASP.NET内置对象的种类。

* 掌握各种内置对象的属性和方法,以及在实际编程中的主要用途。

3.1  ASP.NET 内置对象概述

  ASP.NET包括Page、Response、Request、Application、Server、Session、Cookies

等多个内置对象,每个对象都有自己的属性、方法和事件。

  下面简单介绍这些内置对象的功能,如表3-1所示。

表3-1  ASP.NET的内置对象及其功能

对 象 名

功能说明

Page对象

用来设置与网页有关的属性、方法和事件

Response对象

用来向浏览器或客户端输出信息

Request对象

用来获取从浏览器或客户端返回的信息

Application对象

用来共享多个用户的全局信息

Server对象

用来提供服务器端的一些属性和方法

Session对象

用来存储某些特定用户的共享信息

Cookies对象

用来设置或获取Cookie信息

  

3.2  Page 对 象

  Page对象是由System.Web.UI命名空间中的Page类来实现的,当浏览器访问Web页面时,Web页面被编译成Page对象,缓存在服务器内存中。Page对象用来设置与当前网页有关的属性、方法和事件。其常用的属性、方法和事件如表3-2所示。

表3-2  Page对象常用的属性、方法和事件

名  称

功能说明

IsPostBack属性

获取一个值,该值用来判断该页是否是次被加载

IsVaid 属性

获取一个值,该值用来判断该页是否通过验证

Validators属性

获取请求的网页所包含的全部验证控件集合

DataBind方法

将数据源绑定到指定的服务器控件

Dispose方法

强制服务器控件在内存释放之前执行清理操作

FindControl方法

在页面上搜索指定的服务器控件

Init事件

设置页面或控件的初始值

Load事件

网页被加载时发生

Unload事件

关闭文件、释放对象等时触发

  

3.2.1  IsPostBack属性

  IsPostBack属性经常用来判断网页是否是次访问,当获取的值为false时,表示当前页是首次加载或访问;当该值为true时则不是。从下面的【例3-1】中可以看出IsPostBack属性的用途。

3.2.2  Init事件

  Init事件用来设置页面或控件的初始值,当ASP.NET页面次被访问时,将触发Page对象的Init事件,对应的事件处理方法为Page_Init(),同一个页面只会被触发一次Init事件。

3.2.3  Load事件

  Load事件又称加载或载入事件,当对象的相关数据装载到内存中时触发该事件。即当页面被加载时,就会触发Page对象的Load事件。Load事件也可用来设置页面或者控件的初始值,它与Init事件的主要区别在于:每次加载该页面时,都会触发其Load事件,因此一个页面的Load事件可能被触发多次,而Init事件只会在页面次被访问时触发一次。

  下面通过一个实例来介绍Page对象的这些属性和事件的用途。

  【例3-1】 设计一个下拉列表框(由DropDownList控件实现),下拉列表框中有一些可选的城市,当单击【提交】按钮时,将向下拉列表框中添加用户输入的城市。具体操作步骤如下。

  (1) 打开Visual Studio开发工具,

新建一个网站ch03,在解决方案资源管理器中,右击站点文件,在弹出的快捷菜单中选择【添加新项】命令,添加一个新的Web窗体,命名为eg03_1.aspx。

  (2) 打开【设计】窗口,在【表】菜单中选择【插入表】命令,在【插入表格】对话框中设置行数、列数等参数,设置好参数后,单击【确定】按钮添加一个3行2列的表格,如图3-1所示。

图3-1  设置插入表格参数

  (3)

选中表格的行,单击鼠标右键,在弹出的快捷菜单中选择【修改】|【合并单元格】命令,并输入"输入要添加的城市:",打开工具箱,在表格的第二行添加1个TextBox控件、1个Button按钮,第三行添加1个DropDownList控件,各控件的id属性为默认值,设计界面如图3-2所示(本章节添加的所有控件的具体内容将在第4章中进行介绍)。

图3-2  设计界面

  (4) 双击eg3_1.aspx页面的空白位置,打开eg3_1.aspx.cs文件,在Page对象的Load事件中添加的处理代码如下。

  

protected void Page_Load(object sender, EventArgs e)

{

    //往下拉列表框中添加值

   

DropDownList1.Items.Add("广州");   

    DropDownList1.Items.Add("佛山");

   

DropDownList1.Items.Add("深圳");

   

DropDownList1.Items.Add("东莞");

}

  

  这段代码表示当页面次被加载时,下拉列表框中将添加4个选项,分别是"广州""佛山""深圳""东莞"。

  (5) 切换到设计页面eg3_1.aspx,双击【添加】按钮,添加Click事件的处理代码如下。

protected void Button1_Click(object sender, EventArgs e)

{

    //将输入文本框的值添加到下拉列表框中

   

DropDownList1.Items.Add(TextBox1.Text);

}

  

  (6) 保存文件,运行程序,进入如图3-3所示的界面。

图3-3  运行界面(1)

  (7)

在输入文本框中输入要添加的城市,如"湛江",单击【添加】按钮。查看下拉列表框中的选项,发现除了刚才添加的城市"湛江"外,之前的4个选项又重复添加了一次,如图3-4所示。

图3-4  运行界面(2)

  这是因为当Web页面次执行时,触发了Page对象的Load事件,给下拉列表框添加了4个选项,当单击【提交】按钮时,Page对象的Load事件被再次触发,所以又重复地添加了这4个选项。

  解决这个问题的方法一:在Page对象的Load()事件中,用IsPostBack属性来判断Web页面是否是次被加载,修改后的代码如下。

  

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

    //往下拉列表框中添加值

   

DropDownList1.Items.Add("广州");

    DropDownList1.Items.Add("佛山");

   

DropDownList1.Items.Add("深圳");

   

DropDownList1.Items.Add("东莞");

 }

}

  

  解决这个问题的方法二:将Load事件改为Init事件,问题也可以得到解决,因为Init事件对同一页面在初始化时只触发一次,当单击【添加】按钮时,Init事件将不再被触发。

3.2.4  ClientScript属性

  ClientScript属性主要用来获取ClientScriptManager对象,用于管理脚本、注册脚本和将脚本添加到页上。它包含两个主要方法:RegisterStartupScript和RegisterClientScriptBlock。两个方法的不同之处在于将其包含的脚本代码写入到HTML文件的位置不同,RegisterStartupScript注册的脚本在</form>标签之前,而RegisterClientScriptBlock注册的脚本在<form>标签之后,这两个方法的输入参数是完全一致的,需要注册类型、注册的键值、执行的JavaScript内容,以及是否自动生成<script>标签,另外在注册JavaScript脚本时好用键值检测一下。

  【例3-2】测试ClientScript对象注册脚本的功能,具体步骤如下。

  (1)

在解决方案资源管理器中,右击站点文件ch03,在弹出的快捷菜单中选择【添加】|【Web窗体】命令,添加一个新的Web窗体,命名为eg3_2.aspx。

  (2)

打开eg3_2.aspx的设计页面,添加2个Button控件,并将它们的Text属性分别设为RegisterStartupScript和RegisterClientScriptBlock。

  (3) 双击RegisterStartupScript按钮,为该控件添加Click事件,代码如下。

  

protected void Button1_Click(object sender, EventArgs e)

    {

        if (!Page.ClientScript.IsStartupScriptRegistered("myScript"))

        {

           

Page.ClientScript.RegisterStartupScript(this.GetType(),

                "myScript",

"<script>alert('Hello');</script>");

        }

    }

  

  (4) 双击RegisterClientScriptBlock按钮,为该控件添加Click事件,代码如下。

  

protected void Button2_Click(object sender, EventArgs e)

{

        if

(!Page.ClientScript.IsClientScriptBlockRegistered("myScript"))

        {

           

Page.ClientScript.RegisterClientScriptBlock(this.GetType(),

                "myScript",

"alert('hello');", true);

        }

 }

  

  (5) 保存所有文件,运行程序,图3-5和图3-6分别为单击RegisterStartupScript按钮和RegisterClientScriptBlock按钮的不同效果,从运行效果可得出,同样都是执行脚本弹出对话框,单击RegisterStartupScript按钮时,当前页面内容不变,而单击RegisterClientScriptBlock按钮时,当前页面成为空白页面。

图3-5 

单击RegisterStartupScript按钮的效果

图3-6 

单击RegisterClientScriptBlock按钮的效果

3.3  Response对象

  Response对象由System.Web.HttpResponse类来实现,主要功能是向浏览器中输出信息。Response对象常用的属性和方法如表3-3所示。

表3-3  Response对象常用的属性和方法

名  称

功能说明

Buffer属性

获取一个值,该值指示是否缓冲输出,并在完成处理整个响应之后将其发送

Charset 属性

获取或设置输出流的HTTP字符集

                  续表

名  称

功能说明

ContentType属性

获取或设置输出流的HTTP MIME类型

Cookies 属性

获取响应Cookie集合

Write方法

向浏览器输出信息

Redirect方法

将客户端重新定向到新的URL

End方法

将当前所有缓冲的输出发送到客户端,停止该页的执行

WriteFile方法

向浏览器输出文本文件

  

3.3.1  输出数据(Write方法)

  Response.Write()方法的功能是向浏览器输出信息,简单的用法如下。

  

Response.Write("欢迎来到ASP.NET编程世界!");

  

  此外,也可以在设计页面的源码文件XHTML中使用"< %  

%>"标签来向浏览器输出信息,此时如果"<%"标签后面紧跟Response.Write语句,则可以用"="代替之,示例代码如下。

  

<% Response.Write("欢迎来到ASP.NET编程世界!"); %>

  

等价于:

  

<% = "欢迎来到ASP.NET编程世界!" 

%>

  

  运行结果如图3-7所示。

图3-7  Response对象的运行界面

3.3.2  地址重定向(Redirect方法)

  Response.Redirect()方法的功能是将一个网页链接到另一个页面,实现网页地址的重定向,使得浏览器在显示主页后,自动定向到另一个网页,示例代码如下。

  

Response.Redirect("Login.aspx");

  

  当程序被执行时,页面重定向到当前目录下的Login.aspx页面。也可以转向外部的网站,示例代码如下。

  

Response.Redirect("Http://www.sina.com.cn");

  

  当程序运行时,页面显示的是新浪网的首页,不是当前页。

3.3.3  停止输出(End方法)

  Response.End()方法的功能是用来输出当前所有缓冲的内容,并停止该页的执行。当ASP.NET文件执行时,如果遇到Response.End方法,该页面将自动停止向浏览器输出数据。示例代码如下。

  

Response.Write("欢迎来到ASP.NET学习世界!");

Response.End();

Response.Write("在这里你将学到很多关于网络程序设计的知识。");

  

  运行程序后,该页面将只输出"欢迎来到ASP.NET学习世界!",后面的输出数据将被终止。

  【例3-3】使用Response对象的设计步骤如下。

  (1) 运行Visual

Studio开发环境,打开网站eg03,在解决方案资源管理器中右击站点文件,在弹出的快捷菜单中选择【添加新项】命令,添加一个新的Web窗体,并命名为eg3_3.aspx;

  (2)

打开页面eg3_3.aspx,切换到设计页面,添加一个4行2列的表格,分别合并表格的行和第四行所有单元格,在单元格中输入文字,并添加控件,设计完成后的页面如图3-8所示。

图3-8  Response对象设计界面

  (3) 双击【页面输出】按钮,打开该按钮的Click事件,添加代码如下。

  

protected void Button1_Click(object sender, EventArgs e)

 {

      Response.Write(TextBox1.Text

",欢迎光临!");

 }

  

  (4) 保存文件,运行程序,输入数据,单击【页面输出】按钮后效果如图3-9所示。

图3-9  页面输出运行效果

  (5) 双击【对话框弹出】按钮,打开该按钮的Click事件,添加代码如下。

  

protected void Button2_Click(object sender, EventArgs e)

{

        //种弹出对话框的方式,缺点:背后页面空白

       

Response.Write("<script>alert('" TextBox1.Text

",欢迎光临!')</script>");

 }

  

  (6) 保存文件,运行程序,输入数据,单击【对话框输出】按钮后的效果如图3-10所示。

图3-10  对话框输出效果(1)

  (7) 从图3-10的效果图中可以看出,当弹出对话框时,网页的内容即变成了空白(与3.2.4节中page对象的RegisterClientScriptBlock方法类似),这是因为页面通过服务器传输后又重新刷新了。若要改变此现象,可采用page对象的ClientScript属性添加客户端脚本,改写后【对话框弹出】按钮的Click事件代码如下。

  

protected void Button2_Click(object sender, EventArgs e)

{      

        //第二种弹出对话框的方式

       

Page.ClientScript.RegisterStartupScript(this.GetType(),

"myscript",  "<script>alert('"

TextBox1.Text ",欢迎光临!')</script>");

}

  

  (8) 保存文件,运行程序,输入数据,单击【对话框输出】按钮后的效果如图3-11所示。

图3-11  对话框输出效果(2)

  (9) 回到设计页面,双击【下一页】按钮,打开该按钮的Click事件,添加代码如下。

  

protected void Button3_Click(object sender, EventArgs e)

    {

        string uName =

TextBox1.Text;

        string uPswd =

TextBox2.Text;

        if (uName == "weix"

&& uPswd == "123")

        {        

          

Response.Redirect("eg3_3_1.aspx");

        } 

    }

  

  上段代码中的判断语句表示当用户名输入框和密码输入框中输入的字符串分别为weix和123时,页面将由当前页跳转至eg3_3_1.aspx页面。注意,需在站点ch03中创建新页面eg3_3_1.aspx。

3.4  Request 对 象

  Request对象由System.Web.HttpRequest类来实现,封装了来自客户端的请求信息,可以利用该对象获取客户端的数据。Request对象常用的属性和方法如表3-4所示。

表3-4  Request对象常用的属性和方法

名  称

功能说明

Browser属性

获取客户端浏览器的信息

Form 属性

获取表单数据集合

QueryString属性

获取HTTP字符串变量集合

Cookies 属性

获取客户端发送的Cookie集合

ServerVariables属性

获取Web服务器变量的集合

MapPath方法

将指定的虚拟路径映射为物理路径

SaveAs方法

将HTTP请求保存到磁盘

  

3.4.1  从浏览器获取数据

  Request对象获取表单数据的方式取决于表单数据返回服务器的方式。若表单数据传送的方法为Get,那么表单数据将以字符串的形式附加在网址后面返回服务器,此时需要用Request对象的QueryString属性来获取表单数据;若表单数据传送的方法为Post,那么表单数据将以放在HTTP标头(Header)的形式返回服务器,此时用Request对象的Form属性来获取表单数据。

  使用Form属性的语法如下所示。

  

Request.Form["key"]

  

  下面将通过一个实例来说明Request对象获取数据的用法。

  【例3-4】 在当前页面通过Post方式传送表单数据的设计步骤如下。

  (1)

在ch03站点中,添加一个新的Web页面eg3_4.aspx,在当前页面中添加1个Panel控件,ID设为Panel1,边框颜色为红色,边框宽度为1px,Visible属性的值设置为true,在Panel1控件中添加一个4行2列的表格,合并行的单元格,并在表格的行单元格中输入文字"Request对象",添加2个TextBox控件、1个Button控件,分别设置其ID和Text属性,这里取默认值,设置后的效果如图3-12所示。

  (2)

在Web页面中,添加一个Panel控件,ID设置为Panel2,在Panel2控件中添加一个4行2列的表格,合并行的单元格,并在合并后的单元格中输入文字"Request对象",效果如图3-12所示,边框颜色为蓝色,边框宽度为1px,设置属性Visible的值为false,在Panel2中添加2个Label控件,ID为默认值,调整控件的位置,如图3-12所示。

图3-12  Request对象的设计界面

  (3) 切换到HTML标记页面,找到<form>标记,添加Method属性,值设为Post,示例代码如下。

  

<form id="form1" runat="server" method

="post" >

  

  (4) 双击【提交】按钮,【提交】按钮的Click事件处理代码如下。

  

protected void Button1_Click(object sender, EventArgs e)

{

    Panel1.Visible = false;   

    Panel2.Visible = true;

    Label1.Text = Request.Form

["textBox1"];

    Label2.Text =Request.Form

["textBox2"];

}

  

  (5)

将eg3_4.aspx页面设为起始页,运行结果如图3-13所示。此时,因为面板Panel2的Visible值为false,所以Panel2控件是不可见的。输入数据"张三"和123,单击【提交】按钮,运行结果如图3-14所示,此时,在程序中,已经修改了面板Panel1的Visible值,故Panel1不可见,而面板Panel2的Visible值为true,显示从Form表单传递过来的数据。

图3-13  Request对象运行界面(1)

图3-14  Request对象运行界面(2)

  如果在步骤(3)中,将Method属性的值改为Get,则在程序中获取数据的代码如下所示。

  

Label1.Text = Request.QueryString ["textBox1"];

  

  这两种获取数据的方式都可以采用如下所示省略的写法。

  

Label1.Text = Request["textBox1"];

  

  【例3-3】是在同一页面中获取Form表单的数据,事实上,不同的页面也可以获取来自浏览器的数据。这里以3.3节中的【例3-3】为例,介绍不同页面数据值的获取,设计步骤如下。

  (1) 打开3.3小节中的eg3_3.aspx页面,修改【下一页】按钮的Click事件,修改后的跳转语句代码如下。

  

Response.Redirect("eg3_3_1.aspx?uname=" uName "&upswd=" uPswd

);

  

  (2)

打开3.3小节中创建的eg3_3_1.aspx页面,切换到【设计】窗口,在该页面添加1个3行2列的表格,合并行的单元格,并在合并后的单元格中输入文字"Request对象",然后添加2个Lable控件,ID为默认值,调整控件的位置,如图3-15所示。

图3-15  Request对象测试

  (3) 打开eg3_3_1.aspx.cs文件,在Page_Load事件中添加如下代码。

  

protected void Page_Load(object sender, EventArgs e)

    {

        Label1.Text = Request["uname"];

        Label2.Text =

Request["upswd"];

 }

  

  (4) 保存所有文件,设置eg3_3.aspx页面为起始页,运行程序,输入数据,单击【下一页】按钮,运行效果如图3-16和图3-17所示。

图3-16  Request对象运行界面(1)

图3-17  Request对象运行界面(2)

  注意,运行界面(2)中的网址部分,?

后面的参数uname和upswd的值通过Request对象传给了控件Label1和Label2,并通过Label控件的Text属性显示在页面上。

3.4.2  读取客户端的信息

  利用Request对象还可以得到客户端的一些信息,如客户端浏览器的版本、客户端IP地址等。

  【例3-5】 利用Request对象获取客户端浏览器信息的设计步骤如下。

  (1) 在站点ch03中,右击解决方案资源管理器中的站点文件,在弹出的快捷菜单中选择【新建项目】命令,添加新的Web页面eg3_5.aspx,在Page对象的Load事件中添加的处理代码如下所示。

  

protected void Page_Load(object sender, EventArgs e)

{

   

Response.Write("客户端浏览器:" Request.UserAgent);

   

Response.Write("<br>客户端地址:" Request.UserHostAddress);

}

  

  (2) 将eg3_5.aspx页面设为起始页,运行程序后的结果如图3-18所示。

图3-18  获取客户端浏览器信息的运行界面

3.5  Server 对 象

  Server对象由System.Web.HttpServerUtility类来实现,包含处理服务器端数据的属性和方法。Server对象提供的这些方法和属性非常有用,通过它们可以得到服务器端的计算机名称,可以对字符串进行编码,可以在网页间传递参数时处理一些特殊的字符等,为网络编程带来了极大的方便。Server对象常用的属性和方法如表3-5所示。

表3-5  Server对象常用的属性和方法

名  称

功能说明

MachineName属性

返回服务器端的计算机名称

ScriptTimeout属性

获取或设置请求超时的时间(以秒计)

HtmlEncode方法

对字符串进行Html编码

HtmlDecode方法

对Html编码的字符串进行解码

UrlEncode方法

对字符串进行URL编码

UrlDecode方法

对URL格式字符串进行解码

MapPath方法

将虚拟路径转换为物理路径

Execute方法

使用另一页执行当前请求

Transfer方法

终止当前页的执行,并开始执行新的请求页

3.5.1 

HtmlEncode方法和HtmlDecode方法

  当字符串中含有HTML标签时,浏览器会根据标记的作用来显示内容,而标记本身不会被显示。若需要在页面上显示这些标记字符串,但又不希望浏览器将其解释为HTML标记时,就可以用Server对象的HtmlEncode方法将字符串中的HTML标记字符串转换为字符实体,从而显示在页面中。

  【例3-6】 使用HtmlEncode方法和HtmlDecode方法的设计步骤如下。

  (1)

在网站ch03中,右击解决方案资源管理器中的站点文件,在弹出的快捷菜单中选择【新建项目】命令,新建网页eg3_6.aspx,在Page对象的Load事件中添加如下处理代码。

  

protected void Page_Load(object sender, EventArgs e)

{

    string str1, str2,str3;          //定义字符串变量

    str1 =

"<H2>欢迎光临</H2>";    

//包含有HTML标记的字符串变量str1

    str2 =

Server.HtmlEncode(str1);  

//对字符串编码

    str3 =

Server.HtmlDecode(str1);   //对字符串解码

    Response.Write(str1);            //输出原始字符串

    Response.Write(str2);          //输出编码后的字符串

    Response.Write(str3);          //输出解码后的字符串

}

  

  (2)

将eg3_6.aspx页面设为起始页,运行程序后的结果如图3-19所示,从结果中可以看出,str2字符串中的HTML标记被原样输出了。

图3-19 

使用HtmlEncode方法和HtmlDecode方法的运行效果

  查看页面的源文件,依次选择【查看】∣【源文件】命令,弹出的窗口如图3-20所示,Server对象的HtmlEncode方法已经把<H2>

</H2>标记进行了转换。

图3-20  HTML标记转换结果

  同时可以发现,HtmlEncode方法和HtmlDecode方法是一对可逆的方法,一个进行编码,另一个进行解码,HtmlDecode的作用就是把字符串实体转换为HTML标记字符。

3.5.2  UrlEncode方法和UrlDecode方法

  Server对象的UrlEncode方法用来对字符串进行URL格式编码。这是因为在网页间传递参数时,会出现一些特殊的字符,如http://localhost:1047/eg3-4/Default.aspx?a=5

& b=7中,就有一个特殊字符&,在传递数据时,这个特殊字符会使接收数据端不能正确地得到数据,这时就需要对URL进行编码。

  【例3-7】 使用UrlEncode方法和UrlDecode方法传递特殊字符的设计步骤如下。

  (1)

在网站ch03中,右击解决方案资源管理器中的站点文件,在弹出的快捷菜单中选择【新建项目】命令,新建eg3_7.aspx网页,在网页中添加2个Button按钮,并改变按钮的Text属性,界面设计的效果如图3-21所示。

图3-21 

UrlEncode方法和UrlDecode方法的设计页面

  (2) 双击【使用UrlEncode方法】按钮,添加按钮的Click事件处理代码如下。

  

protected void Button1_Click(object sender, EventArgs e)

{

  

Response.Redirect("eg3_7_1.aspx?str=a" Server .UrlEncode

("&& b 的值"));

}

  

  (3) 双击【使用UrlDecode方法】按钮,添加按钮的Click事件处理代码如下。

  

protected void Button2_Click(object sender, EventArgs e)

{

   

Response.Redirect("eg3_7_1.aspx?str=a" Server .UrlDecode

("&& b的值"));

}

  

  代码的意思很明确,希望通过Response对象的Redirect方法将页面地址重新定向到eg3_7_1.aspx,且传递参数str的值"a&&b的值",因字符串中有特殊字符&&的存在,如果直接传递或使用UrlDecode方法,&&和之后的字符串将被忽略,使用UrlEncode方法进行URL编码规则之后,该字符串"a&&b的值"将被正确传递。

  (4) 在解决方案资源管理器中,右击站点文件,在弹出的快捷菜单中选择【新建项目】命令,添加一个新的Web页面eg3_7_1.aspx,双击该页面打开逻辑代码编辑页,在Page对象的Load事件中添加代码如下。

  

protected void Page_Load(object sender, EventArgs e)

{

   

Response.Write(Request["str"]);

}

  

  上段代码的作用是在eg3_7_1.aspx页面中,通过Request对象的QueryString方法接收来自上一页面传递过来的值,这里是省略写法。

  (5)

将eg3_7.aspx页面设为起始页,运行程序,单击【使用UrlEncode方法】按钮,结果如图3-22所示。单击【使用UrlDecode方法】按钮,结果如图3-23所示。

图3-22  使用UrlEncode方法

图3-23  使用UrlDecode方法

  从上面的运行结果可以发现,没有编码(UrlDecode

方法)的参数内容因为特殊符号&&没有被完全传递,而经过编码(UrlEncode

方法)后的参数内容则被正确传递且显示在浏览器中。

3.5.3  MapPath方法

  在页面中,一般使用虚拟路径,但是有时也需要使用页面的物理路径,例如,进行文件操作。虽然物理路径可以在程序中直接写出,但是这样的方式不利于网站的移植。此时,使用Server对象的MapPath方法就可以将虚拟路径转换为物理路径。

  【例3-8】 使用MapPath方法将虚拟路径转换为物理路径的代码如下。

  

protected void Page_Load(object sender, EventArgs e)

{

   

Response.Write("当前文件的物理路径为:<br>");

   

Response.Write(Server.MapPath("eg3_8.aspx"));

}

  

  运行结果如图3-24所示,程序中的<br>为HTML标记,表示换行。

图3-24  得到文件的物理路径

3.6  Application 对 象

  Application对象由System.Web.HttpApplicationState类来实现,它用于维护应用程序的状态,和应用程序的生命周期有关。当用户请求个ASP.NET页面时开始创建该对象,当程序关闭或进程撤销时结束该对象。

  此外,可以利用Application对象在不同的客户端之间实现数据的共享。向Application对象中添加一个对象后,该对象可被同一个Web项目中的所有页面存取,并且不同的客户端可以共享此对象,即都可以对其进行读取、修改或删除。Application对象常用的属性和方法如表3-6所示。

表3-6  Application对象常用的属性和方法

名  称

功能说明

Count属性

获取Application对象变量的数量

Add方法

将新的对象添加到Application对象集合中

Clear方法

清除全部Application对象变量

GetKey方法

使用索引值获取Application对象变量

Lock方法

锁定Application对象变量

UnLock方法

解除锁定的Application对象变量

Remove方法

移除指定的Application对象变量3.6.1 

利用Application对象存取信息

  Application对象是一个集合对象,利用Application对象的Add方法可以将新对象添加到集合中,Add方法有两个参数,个参数是要添加到集合中的对象名,第二个参数是对象值。Add方法的定义代码如下。

  

Public void Add(string name, object value);

  

  其中,参数name为要添加到集合中的对象名,value为对象值,且value为object类型,故可以将任何类型的值存入Application对象中。示例代码如下。

  

Application.Add("Name","张三");

  

  也可以采用如下格式添加Application对象。

  

Application["Name"]="张三";

  

  将信息存入Application对象后,就可以在需要时从Application对象中读取出来使用。注意,因为得到的对象都是Object类型的,在使用前要先经过相应的类型转换,示例代码如下。

  

string Name=Application["Name"].ToString();

  

  【例3-9】利用Application对象存取信息的设计步骤如下。

  (1)

在网站ch03中,右击解决方案资源管理器中的站点文件,在弹出的快捷菜单中选择【新建项目】命令,添加新的页面eg3_9.aspx,在Page对象的Load事件中添加如下代码。

  

protected void Page_Load(object sender, EventArgs e)

{

    Application.Clear();      //清除Application对象中的信息

    //利用Application对象存储信息

    Application.Add("Name",

"张三");

    Application.Add("Sex",

"男");

    Application["Age"] =

22;

    //从Application对象中读取信息

    for (int i = 0; i <

Application.Count; i )

    {

     Response.Write("对象名:"

Application.GetKey(i));

       

Response.Write("<br>对象值:" Application[i]

"<br>");

    

Response.Write("<br>");

    }

}

  

  在这段代码中,先通过Application对象的Clear方法清除所有的对象信息,然后存入新的对象信息,这里采用了两种不同的格式。程序后通过循环语句读取Application中的所有信息。Application中的GetKey(i)方法用来获取存储在Application中的第i个对象的名称。

  (2) 将eg3_9.aspx设置为起始页,运行程序后的结果如图3-25所示。

图3-25  运行结果

3.6.2  锁定Application对象

  Application中的信息是所有客户端都能共享的,在程序运行过程中有可能发生多个用户同时操作Application对象的情形,故应该在修改Application对象时,对其加锁,防止意外错误。Application对象中的Lock方法和UnLock方法可以实现锁定和解除锁定的功能。示例代码如下。

  

Application.Lock();     

//锁定Application

Application["Sex"]="女";   //修改Application中的对象

Application.UnLock();    

//解除对Application的锁定

  

  在修改名为Sex的变量之前,先将Application锁定,以防止其他用户更改,在修改完后,解除对应用程序变量值的锁定。

3.6.3  删除Application中的信息

  Application对象的Remove方法用来删除那些不再使用的变量。如在【例3-9】中,根据客户需求不再使用名为Sex的应用程序变量,则可以通过如下语句来删除。

  

Application.Remove("Sex");

  

  如果要删除所有的应用程序变量,可以使用Clear方法实现,如【例3-9】中的条语句。

3.7  Session 对 象

  Session对象由System.Web.SessionState.HttpSessionState类实现,用来存储或跟踪用户的数据。Session对象存储的信息是局部的,属于某个特定的用户,而Application存储的信息是整个应用程序的。Session对象常用的属性和方法如表3-7所示。

表3-7  Session对象常用的属性和方法

名  称

功能说明

Count属性

获取会话状态集合中的对象个数

TimeOut属性

获取并设置所允许的长空闲时间(以分钟计)

Mode属性

获取当前会话状态的模式

Add方法

向会话状态集合中添加一个新项

Clear方法

从会话状态集合中移除所有的键和值

Abandon方法

取消当前会话

Remove方法

移除指定的Application对象变量

  

  当一个Session变量被建立后,如果没有超时或者人为地删除,则站点内的其他页面都可以使用它。服务器分别为每一个客户端建立一个Session对象,因此Session对象需要占据服务器的资源。若用户在指定的一段时间内未再次向服务器提出请求,为节约服务器的资源,服务器则会清除该用户的Session对象,这个时间段称为所允许的长的非活动时间。默认情况下,Session对象长的非活动时间是20分钟,如果要修改此项设定,则可以通过Session对象的TimeOut属性来设置。

  创建Session变量的语法与Application相似,示例代码如下。

  

Session.Add("Name","张三");

  

  或者如下所示。

  

Session["Name"]="张三";

  

  获取Session对象数据的语法如下所示。

  

string Uname=Session["Name"].ToString();

  

  因为Session对象的返回值为Object类型,故需要对返回值进行相应的转换。

  在Web应用程序中,还存在一些比较特殊的页面,这些页面会自动检查访问者的权限,不同权限的访问者看到的执行结果是不同的。下面将通过一个实例来说明Session对象在编程过程中的用法。

  【例3-10】用Session对象存储客户的数据,设计用户登录页面的设计步骤如下。

  (1) 在网站ch03中,右击解决方案资源管理器中的站点文件,在弹出的快捷菜单中选择【新建项目】命令,添加2个Web页面,分别是eg3_10.aspx和eg3_10_1.aspx。其中,eg3_10.aspx是客户进行登录的界面,eg3_10_1.aspx是主界面。

  (2)

在eg3_10.aspx页面中,添加1个4行2列的表格,合并行和第四行,在行单元格中输入文字"用户登录",添加2个TextBox控件、1个Button控件,并设置各控件的属性值,调整其位置和大小,设计效果如图3-26所示。

图3-26  Session设计界面

  (3) 双击eg3_10.aspx页面中的【登录】按钮,添加Click事件的处理代码如下。

  

protected void Button1_Click(object sender, EventArgs e)

{

    Session.Timeout =1;     //设置访问页面的有效时间为1分钟

    if (TextBox1.Text ==

"张三" && TextBox2.Text == "123")

    {

       

//如果为合法的用户,则通过Session存储数据

        Session["flag"] =

"OK";

        Session["Name"] =

TextBox1.Text;

        Session["Pwd"] =

TextBox2.Text;

       

Response.Redirect("eg3_10_1.aspx");

    } 

}

  

  此段代码首先通过Session对象的TimeOut属性设置访问网页的有效时间是1分钟,然后判断客户是否是合法的用户,如果是,则将flag变量设为OK值来标识,并将客户的信息分别存储在Session对象中。

  (4) 双击eg3_10_1.aspx页面,添加Page对象的Load事件处理代码如下。

  

protected void Page_Load(object sender, EventArgs e)

{

    if (Session["flag"] ==

null || (string)Session["flag"] != "OK")

       

Response.Redirect("eg3_10.aspx");

    else

       

Response.Write("欢迎你," Session["Name"]);

}

  

  (5) 将eg3_10.aspx页面设置为起始页,运行程序结果如图3-27所示。

图3-27  Session运行界面(1)

  

当正确登录后,出现如图3-28所示的界面,然后间隔1分钟后再次刷新eg3_10_1.aspx页面,此时,因为会话时间已经超过了设置的1分钟,Session对象中存储的数据将被全部删除,故地址将重新定位到eg3_10.aspx页面。

图3-28  Session运行界面(2)

3.8  Cookie 对 象

  Cookie对象是HttpCookieCollection类的一个实例,可用它存放非敏感的用户信息。当浏览网站时,Cookies可以记录用户的ID、密码、历史网页、停留的信息等。当用户再次浏览网站时,浏览器会在用户本地硬盘查找与之相关的Cookies信息,程序可以根据这些信息进行相应的操作。

  Cookies对象与Session对象相似,都可以用来存储或跟踪用户的数据,它们的主要区别在于:Session对象的信息保存在服务器上,而Cookies对象的信息保存在客户端的浏览器上。Cookies对象常用的属性如表3-8所示。

表3-8  Cookies对象常用的属性

名  称

功能说明

Name属性

获取或设置Cookie的名称

Expires属性

设置Cookie变量的有效时间

Value属性

获取或设置单个Cookie变量的值

Values属性

获取在Cookie对象中包含的键值的集合

  

  可以通过Response对象的Cookies集合保存Cookie变量,格式如下所示。

  

Response.Cookies["Greet"].Value="欢迎光临";

  

  可以通过Request对象的Cookies集合读取Cookie变量,格式如下所示。

  

变量名=Request.Cookies["Greet"].Value;

  

  【例3-11】 设置或获取Cookies对象数据的设计步骤如下。

  (1)

在网站ch03中,右击解决方案资源管理器中的站点文件,在弹出的快捷菜单中选择【添加新项】命令,添加新的页面eg3_11.aspx,添加1个Button按钮,Text属性设为"获取Cookie变量的值"。

  (2) 在Page对象的Load事件中设置Cookie变量,添加代码如下。

  

protected void Page_Load(object sender, EventArgs e)

{

    HttpCookie cookie = new

HttpCookie("Greet");

    cookie.Value =

"欢迎光临";

    Response.Cookies.Add(cookie);

}

  

  (3) 双击【获取Cookie变量的值】按钮,添加Click事件的处理代码如下。

  

protected void Button1_Click(object sender, EventArgs e)

{

    string str = Request.Cookies["Greet"].Value;

    Button1.Visible = false;

    Response.Write(str);

}

  

  (4) 将eg3_11.aspx设置为起始页,运行程序,结果如图3-29所示。

图3-29  设置Cookie变量                

  这段程序首先通过Page_Load方法设置了一个Cookie变量的值,单击【获取Cookie变量的值】按钮,读取Cookie的值,运行结果如图3-30所示。

图3-30 获取Cookie变量

3.9  实战1:统计网站在线人数

  为了让网站管理者能根据用户数量来考察服务器或者程序的性能,了解网站的吸引力或者网站程序的效率,需要统计该网站的在线用户人数。本小节使用Application对象和Session对象实现在线用户人数的统计,设计步骤如下。

  (1) 在网站ch03中,右击解决方案资源管理器中的站点文件,在弹出的快捷菜单中选择【添加新项】命令,添加一新的Web窗体eg3_12.aspx。

  (2)

打开ch03站点,右击解决方案资源管理器,在弹出的快捷菜单中选择【添加新项】命令,添加"全局应用程序类",此文件通常不改名,默认名为Global.asax。

  (3)

打开Global.asax,IDE(集成开发环境)已自动生成了一些事件的处理方法,在Application_Start事件中添加如下代码,实现在线人数计数器的初始化。

  

void Application_Start(object sender, EventArgs e)

    {

        //在应用程序启动时运行的代码

       

Application["count"] = 0;

  }

  

  (4) 在Session_Start事件中添加如下代码,实现计数器加1的功能。

  

void Session_Start(object sender, EventArgs e)

    {

        //在新会话启动时运行的代码

        Application.Lock();

       

Application["count"] = (int)Application["count"]

1;

        Application.UnLock();

  }

  

  由于Application对象中的数据对所有用户都共享,因此可能存在多个用户在同一时间对Application对象进行访问,从而造成混乱的问题,这就需要在修改数据前要锁定Application对象,修改后再解锁,以保证在同一时刻只有一个用户访问。

  (5) 在Session_ End事件中添加如下代码,实现计数器减1的功能。

  

void Session_End(object sender, EventArgs e)

    {

        //在会话结束时运行的代码

        //注意: 只有在 Web.config 文件中的

sessionstate 模式设置为InProc 时,

        //才会引发 Session_End

事件。如果会话模式设置为 StateServer

        //或 SQLServer,则不引发该事件

        Application.Lock();

       

Application["count"] = (int)Application["count"] -

1;

        Application.UnLock();

    }

  

  (6) 打开eg3_12.aspx.cs,在其Page_Load事件中添加代码如下,显示当前在线人数。

  

protected void Page_Load(object sender, EventArgs e)

    {

        if (!Page.IsPostBack)

        {

            Session.Timeout =

1;

            int UserCount =

(int)Application["count"];

           

Response.Write("当前在线人数为:" UserCount);

        }

}

  

  (7) 保存所有文件,运行程序,复制网址在不同的浏览器中浏览,效果如图3-31所示,这里以不同的浏览器模拟不同的客户端,也可发布网站之后,在不同的计算机上访问该页面查看效果。

图3-31  统计在线人数运行界面

3.10  实战2:用户登录

  在用户登录网站时,经常可以看到保存用户登录信息的提示。本小节通过Cookie对象和Session对象来介绍如何在网页中保存用户登录的信息,具体的设计步骤如下。

  (1)

在网站ch03中,右击解决方案资源管理器中的站点文件,在弹出的快捷菜单中选择【添加新项】命令,添加2个Web窗体eg3_13.aspx和eg3_13_1.aspx。

  (2)

打开eg3_13.aspx页面,切换到【设计】页面,在该页面中添加1个4行2列的表格,分别合并第1行和第4行的单元格;在第1行的单元格内输入文字"用户登录";在第2行第1个单元格中输入文字"用户名",第2个单元格添加1个TextBox控件;在第3行第1个单元格中输入文字"密码",第2个单元格添加1个TextBox控件;在第4行的单元格内添加1个Button控件和1个CheckBox控件,并设置这些控件的属性值,以及调整位置,设计完的效果如图3-32所示。

图3-32  用户登录页面

  (3)  打开eg3_13_1.aspx页面,切换到【设计】页面,在该页面中添加1个4行2列的表格,分别合并第1行和第4行的单元格。在第1行的单元格中输入文字"登录成功";第2行第1个单元格中输入文字"用户名",第2个单元格添加1个Label控件;第3行第1个单元格输入文字"密码",第2个单元格添加1个Label控件;第4行添加1个CheckBox控件和1个LinkButton控件,并设置这些控件的属性值,以及调整控件位置,设计完的效果如图3-33所示。

图3-33  登录成功页面设计

  (4) 

打开eg3_13.aspx页面,双击【登录】按钮,添加Button控件的Click事件,代码如下。

  

protected void Button2_Click(object sender, EventArgs e)

    {

        string uName =

TextBox1.Text;  //获取用户名

        string uPswd = TextBox2.Text;  //获取密码

        //新建Cookie对象

        HttpCookie loginCookie = new

HttpCookie("autoLogin");

        if (uName == "weix"

&& uPswd == "123")

        {

           

Session["uName"] = uName;

           

Session["uPswd"] = uPswd;

            if (CheckBox1.Checked)

            {

               

//设置Cookie的有效期为1天

                loginCookie.Expires =

DateTime.Now.AddDays(1);

            }

            else

            {

               

//设置Cookie的有效期为-1天

                loginCookie.Expires =

DateTime.Now.AddDays(-1);

            }

           

//将Cookie变量添加到Response的Cookie集合中

           

Response.Cookies.Add(loginCookie);

           

Response.Redirect("eg3_13_1.aspx");

        }

        else

        {

           

Response.Write("fail");

        }

    }

  

  (5) 打开eg3_13.aspx.cs文件,添加Page的Load事件,代码如下。

  

protected void Page_Load(object sender, EventArgs e)

    {

        if (Request.Cookies["autoLogin"]

!= null)

        {

           

Response.Redirect("eg3_13_1.aspx");

        }

  }

  

  (6) 打开eg3_13_1.aspx.cs文件,添加Page的Load事件,代码如下。

  

protected void Page_Load(object sender, EventArgs e)

    {     

        Label1.Text =

Session["uName"].ToString();

        Label2.Text =

Session["uPswd"].ToString();

    }

  

  (7) 打开eg3_13_1.aspx页面,双击【返回】按钮,添加LinkButton的Click事件,代码如下。

  

protected void LinkButton1_Click(object sender, EventArgs e)

    {

        HttpCookie loginCookie =

Request.Cookies["autoLogin"];

        if (loginCookie !=

null)

        {

            if

(CheckBox1.Checked)

            {

                loginCookie.Expires =

DateTime.Now.AddDays(-1);

            }

           

Response.Cookies.Add(loginCookie);

        }

       

Response.Redirect("eg3_13.aspx");

    }

  

  (8)

保存所有文件,设置eg3_13.aspx为首页,运行程序,输入用户名和密码,这里输入的用户名为weix,密码为123,选中【记住登录】复选框,单击【登录】按钮,运行效果如图3-34和图3-35所示。

 

          图3-34  用户登录                           图3-35  登录成功

  此时,如果在登录成功页面单击【返回】按钮,发现页面一直处于eg3_13_1.aspx页面,返回不了eg3_13.aspx页面,说明此时Cookie已经记住了该登录信息。在该页面,选中【取消记住登录】复选框,则可删除保存的Cookie信息,此时再单击【返回】按钮,即可返回到用户登录页面。该例子采用Session对象来存储用户的信息,事实上也可以改为Cookie对象进行存取。

小    结

  本章详细介绍了ASP.NET中一些内置对象的属性、方法和事件,并通过一些简单的例子演示了这些对象在Web编程中的使用。Page对象用来设置与网页有关的属性、方法和事件;Response对象用来向客户端发送信息;Request对象用来从客户端获取信息;Server对象提供了访问服务器的一些属性和方法;Application对象用来设置所有用户共享的全局信息;Session对象用来在服务器端保存某个客户端的信息;Cookie对象用来在客户端保存用户的信息。

习    题

一、选择题

  1.  下面Server对象的(    )是用来将虚拟路径转换为物理路径的。

A. HtmlEncode方法     B.

UrlEncode方法

C. MapPath方法      D.

UrlDencode方法

  2.  用来删除Application对象中的信息的方法是(    )。

A. Add方法   B. Lock方法  C. Remove方法 

D. UnLock方法

  3.  下面(    )是可以用来将地址重定向的。

A. Response对象      B. Request对象

C. Page对象        D. Server对象

  4.  单击按钮(Button)时,触发的事件为(    )。

A. Load事件       B. Click事件

C. DoubleClick事件     D.

Closing事件

二、填空题

  1. 用来判断当前页是否为响应客户端回发而加载的是Page对象的        

属性。

  2. 用来向客户端的浏览器输出信息的是Response对象的          

方法。

  3. 在程序执行过程中,需要终止当前页的执行应采用         

对象的        

方法。

三、问答题

  1. ASP.NET包含哪些内置对象?各有什么功能?

  2. Application对象、Session对象和Cookies对象有什么区别和联系?

  3. Request.Form()方法和Request.QueryString()方法有什么区别?

四、上机操作题

  1. 编写一个程序,实现在页面中显示客户的IP地址。

  2. 编写一个用户登录程序,实现当用户名和密码都正确时,页面将链接到另一个页面。

  3. 编写一个程序,定义一个Cookie对象并获取其中的数据。


在线阅读/听书/购买/PDF下载地址:


原文赏析:

暂无原文赏析,正在全力查找中!


其它内容:

编辑推荐

本书特点

1. 循序渐进,通俗易懂

  本书所讲的内容避开了晦涩难懂的理论知识,但又覆盖了使用ASP.NET技术进行Web编程所需要的各方面的基础知识,并从基本操作开始,循序渐进地介绍了开发Web应用程序需要用到的基本技术。采用通俗易懂的语言,一步一步、手把手地教会您各种技术的使用,宛如现场专家言传身教。

2. 项目驱动,案例教学

  本书不采用传统的"以概念解释为主"的方式,而采用"以项目为驱动,实践为主"的方式描述完成每一个任务的方法和步骤。每一个任务的提出,都伴随着一个完整的实例,读者通过完成此实例,就能掌握相关的基本概念和技术。

3. 步骤详细,图文并茂

  本书在介绍ASP.NET的各项技术时,采用了项目实践的方式,且在讲解中步骤详细,图文并茂,读者只需要根据步骤一步步操作,边学边练,就可以掌握相关的技能,并从中找到学习ASP.NET的乐趣。

4. 结构合理,符合软件技术专业人才培养目标

  作者在编写此书时充分考虑了现代教育的特点,旨在培养具有较高水平、较高素质的技能型人才。本书结构合理,能让读者轻松上手,快速掌握相关内容,全面提高学、练、用的能力。

  在结构上,本书先用少量篇幅介绍了ASP.NET技术的语言基础,使读者在学习ASP.NET技术之前对相关知识有所了解。

  在介绍ASP.NET技术时,作者并不急于解释相关概念,而是将这些技术融入一个个小案例中,使读者在实践中进行探索、分析和创新,从而掌握这些理论知识。同时介绍了目前网络比较流行的几个网站功能模块,读者只需要作少许的修改和扩展,便可应用于实际项目中。


书摘插图


前言

前    言

一、关于ASP.NET

  ASP.NET是微软公司推出的Web开发平台,是一种建立在公共语言运行库(Common Language Runtime,CLR)上的编程框架,可用于在服务器上开发功能强大的Web应用程序。它是目前技术、特征丰富、功能强大的Web开发平台之一。ASP.NET自推出以来,具有开发效率高、使用简单快捷、管理更简单、全新的语言支持、安全性高等特点,是目前主流网络编程技术之一。

  ASP.NET中内置了很多控件,在其他Web开发技术(如JSP)中需要费尽心思才能完成的功能,在ASP.NET中只需要简单地套用相应的内置控件即可完成。ASP.NET在数据库连接方面做了很大的改进,新增的DataSource控件和GridView控件使得数据库的操作更加简捷方便。

二、本书结构

  本书在第1版的基础上,进行了如下改进:采用目前市场上较流行的开发工具版本,版本更高,提供的功能更多;增加了IIS(Internet Information Services,互联网信息服务)的安装过程,以及网站的发布与部署;增加了DIV CSS布局基础知识,使得页面的设计更轻松、美观;将第1版中第5章页面结构与配置文件的内容分散到其他章节,并删除了一些冗余的段落和文字;在第1章至第6章中,增加了多个实战案例,便于在学习基础知识的同时,掌握案例的设计与应用;在第7章中,增加了程序的调试过程,使读者能更清晰地看到各个数据的变化过程;补全了第12章中其他所有功能的设计与实现,使之成为一个功能齐全的Web应用程序;修正了第1版中部分程序源码的笔误,确保程序的正确性和可行性。

  本书内容由浅入深,首先介绍ASP.NET编程必须掌握的基本技术,并安排了对该章知识点综合应用的实战案例,非常适合初学者入门学习;然后介绍实际开发中常用的模块,这部分内容适合初、中级读者学习编程技术;后通过一个综合实例讲解实际项目的开发过程,其目的是快速提高读者的实战编程能力。

  各章的主要内容简述如下。

  第1章介绍网站发展历史、.NET框架、Visual Studio开发环境、创建个ASP.NET程序、aspx文件和aspx.cs文件,以及发布和部署网站等内容。

  第2章介绍ASP.NET语言基础,包括C#语言基础、XHTML标记语言、CSS简介、DIV CSS布局等内容。

  第3章介绍ASP.NET内置对象,包括Page对象、Response对象、Request对象、Server对象、Application对象、Session对象和Cookie对象等内容。

  第4章介绍Web服务器控件,包括基本控件、选择控件、列表控件和高级控件等内容。

  第5章介绍验证控件的使用方法。

  第6章介绍常用的网页布局技术,包括ASP.NET用户控件、母版页和内容页,以及导航控件等内容。

  第7章介绍Web数据库编程基础,包括SQL语言,ADO.NET概述,Connection对象,Command对象,DataReader对象,DataAdapter对象,DataSet对象,插入、编辑、删除数据,数据绑定,数据控件,配置文件Web.config,以及程序调试等内容。

  第8章介绍开发Web应用程序常用的模块--注册登录模块,并详细介绍验证码生成的过程。

  第9章介绍开发Web应用程序常用的模块--在线投票模块,并详细介绍XML文档的使用,以及以图片形式显示结果的过程。

  第10章介绍开发Web应用程序常用的模块--留言板模块,并详细介绍留言板的制作过程,为后面论坛系统的制作奠定基础。

  第11章介绍开发Web应用程序常用的模块--文件上传下载模块,并详细介绍数据库保存图片数据的过程。

  第12章介绍使用Visual Studio与SQL Server设计一个完整的实例--BBS论坛系统,详细讲解一个项目的开发过程,使读者对Web应用程序的开发有一个较系统的理解。

三、本书特点

1. 循序渐进,通俗易懂

  本书所讲的内容避开了晦涩难懂的理论知识,但又覆盖了使用ASP.NET技术进行Web编程所需要的各方面的基础知识,并从基本操作开始,循序渐进地介绍了开发Web应用程序需要用到的基本技术。采用通俗易懂的语言,一步一步、手把手地教会您各种技术的使用,宛如现场专家言传身教。

2. 项目驱动,案例教学

  本书不采用传统的"以概念解释为主"的方式,而采用"以项目为驱动,实践为主"的方式描述完成每一个任务的方法和步骤。每一个任务的提出,都伴随着一个完整的实例,读者通过完成此实例,就能掌握相关的基本概念和技术。

3. 步骤详细,图文并茂

  本书在介绍ASP.NET的各项技术时,采用了项目实践的方式,且在讲解中步骤详细,图文并茂,读者只需要根据步骤一步步操作,边学边练,就可以掌握相关的技能,并从中找到学习ASP.NET的乐趣。

4. 结构合理,符合软件技术专业人才培养目标

  作者在编写此书时充分考虑了现代教育的特点,旨在培养具有较高水平、较高素质的技能型人才。本书结构合理,能让读者轻松上手,快速掌握相关内容,全面提高学、练、用的能力。

  在结构上,本书先用少量篇幅介绍了ASP.NET技术的语言基础,使读者在学习ASP.NET技术之前对相关知识有所了解。

  在介绍ASP.NET技术时,作者并不急于解释相关概念,而是将这些技术融入一个个小案例中,使读者在实践中进行探索、分析和创新,从而掌握这些理论知识。同时介绍了目前网络比较流行的几个网站功能模块,读者只需要作少许的修改和扩展,便可应用于实际项目中。

  通过对本书的阅读,读者应能达到如下能力目标。

  (1)    对简单网站进行设计、编辑、调试、运行的能力。

  (2)    对ASP.NET各类控件的使用能力。

  (3)    对网站数据库进行管理和维护的能力。

  (4)    应用所学知识开发三层架构应用程序的能力。

四、本书适用对象

  本书可作为高等院校计算机相关专业的教材,也可供具有一定编程经验又需要迅速熟悉ASP.NET的读者参考,同时也适合自学ASP.NET的读者阅读。

  本书由年轻而富有经验的.NET软件技术研究小组组织编写,由魏菊霞任主编,李志中、谢云任副主编,相信本书能够为读者顺利进入ASP.NET编程世界提供帮助。

  本书的编写得到了学院领导的大力支持,在此表示衷心的感谢。

  尽管作者已经尽了各种努力来保证语言和代码中不出现错误,但由于编写时间仓促,水平有限,书中疏漏和不足之处在所难免,恳请各位读者和专家批评指正,提出宝贵意见和建议。

 

 

                                                                                                                                  编  者  



书籍真实打分

  • 故事情节:6分

  • 人物塑造:4分

  • 主题深度:3分

  • 文字风格:7分

  • 语言运用:3分

  • 文笔流畅:5分

  • 思想传递:3分

  • 知识深度:9分

  • 知识广度:5分

  • 实用性:3分

  • 章节划分:7分

  • 结构布局:5分

  • 新颖与独特:9分

  • 情感共鸣:5分

  • 引人入胜:7分

  • 现实相关:7分

  • 沉浸感:7分

  • 事实准确性:5分

  • 文化贡献:6分


网站评分

  • 书籍多样性:8分

  • 书籍信息完全性:5分

  • 网站更新速度:3分

  • 使用便利性:4分

  • 书籍清晰度:9分

  • 书籍格式兼容性:9分

  • 是否包含广告:6分

  • 加载速度:6分

  • 安全性:3分

  • 稳定性:9分

  • 搜索功能:5分

  • 下载便捷性:9分


下载点评

  • 经典(253+)
  • 简单(246+)
  • 目录完整(161+)
  • 值得下载(174+)
  • 超值(378+)
  • 微信读书(571+)
  • 无缺页(433+)
  • 内涵好书(676+)
  • 无盗版(642+)
  • 收费(128+)
  • 强烈推荐(328+)
  • 章节完整(287+)
  • 愉快的找书体验(214+)

下载评价

  • 网友 堵***格: ( 2025-01-19 04:50:27 )

    OK,还可以

  • 网友 曾***文: ( 2025-01-12 03:18:20 )

    五星好评哦

  • 网友 宫***玉: ( 2025-01-22 14:21:59 )

    我说完了。

  • 网友 常***翠: ( 2025-01-06 23:14:58 )

    哈哈哈哈哈哈

  • 网友 曹***雯: ( 2025-01-19 02:09:31 )

    为什么许多书都找不到?

  • 网友 饶***丽: ( 2025-01-19 15:04:50 )

    下载方式特简单,一直点就好了。

  • 网友 石***致: ( 2025-01-11 08:53:05 )

    挺实用的,给个赞!希望越来越好,一直支持。

  • 网友 康***溪: ( 2025-01-25 05:56:32 )

    强烈推荐!!!

  • 网友 苍***如: ( 2025-01-12 07:44:43 )

    什么格式都有的呀。

  • 网友 融***华: ( 2025-01-24 05:06:16 )

    下载速度还可以

  • 网友 索***宸: ( 2025-01-09 14:53:01 )

    书的质量很好。资源多

  • 网友 师***怡: ( 2025-01-22 06:02:54 )

    说的好不如用的好,真心很好。越来越完美

  • 网友 方***旋: ( 2025-01-17 17:32:34 )

    真的很好,里面很多小说都能搜到,但就是收费的太多了


随机推荐