一、ASP.NET Web 应用程序基础
1.Web应用程序简介
1.1.C/S体系结构
客户端/服务器 Client/Server
Linux | 服务器 |
Windows | |
iMac |
1.2.B/S体系结构
浏览器/服务器 Browser/Server
2.HTTP协议
2.1.URL
统一资源定位器{URL、URN}
应用层协议://主机IP地址或域名/资源所在路径/文件名
http:// sport.163.com: 80/ xj/ index.html
应用层协议 Web服务器域名 端口号 文件所在路径 文件名
2.2.HTTP协议概述
超文本传输协议
2.3.HTTP协议处理流程
浏览器发出一个HTTP请求,服务器能够返回一个响应,并且通过一个HTTP请求只能对应一个响应
2.3.1.客户端和Web服务器建立连接 C/S建立连接
2.3.2.客户端发送HTTP请求 C发请求
2.3.3.服务器接收客户端的请求,生成HTTP响应并发送给客户端 S接收请求,生成HTTP响应发给C
2.3.4.服务器关闭连接。客户端接收服务器的响应,恢复页面 S关闭连接
说明:服务器端关闭连接后,不再存储连接信息,所以HTTP协议被称为无状态协议
2.4.HTTP请求方式
2.4.1.GET请求方式
默认 不安全,暴露在地址栏,不能超过2KB
2.4.1.POST请求方式
以文件方式发送,慢,安全,数据量大
3.ASP.NET简介与Web Forms的创建
3.1.ASP.NET支持的3种开发模式
3.1.1.Web Pages
最简单的ASP.NET模型
内置了用于数据库、视频、社交媒体等的模板和帮助器
3.1.2.Web Forms
传统的ASP.NET事件驱动开发模型
添加了服务器控件、服务器事件以及服务器代码的网页
3.1.3.MVC
MVC编程模型是与传统的ASP.NET(Web Forms)相比更轻量级的替代方案
轻量级的可测试性的框架,同时整合了所有已有的ASP.NET特性,比如模板页。安全性和认证
3.2.创建Web Forms应用程序
新建——项目——C# 所有平台 Web——ASP.NET Web应用程序(.NET Framework)——确定——Web窗体
3.2.1.站点结构分析
.aspx是Web Forms窗体页面的后缀
App_Data文件夹是ASP.NET提供程序存储自身数据的默认位置
App_Start文件夹是应用程序静态配置文件
Content文件夹用于存放样式表等资源文件
fonts文件夹用于存放项目中需要使用到的字体
Scripts文件夹用于存放站点所用到的JavaScript脚本文件
3.2.2.页面文件结构分析
文件名.aspx 页面源文件
文件名.asp.cs 页面类文件
前端进后端 F7 右键——查看代码
后端进前端 Shift+F7
编译 ctrl+F5
设置起始页 右键——设置为起始页
<% @ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"%>
<%@......%>是ASP.NET页面指令
@Page表示当前是Page页面,即aspx页面
Language表示当前页面所使用的语言,此处为C#
AutoEventWireup指是否启用页面自动事件回传
CodeFile表示页面所对应的类文件,即Default.aspx.cs文件
Inherits表示页面所在类的类名
提醒:Page类提供.aspx文件的基本行为,Page的父类TemplateControl类定义了页面(或控件)的基本功能。TemplateControl类的父类Control类定义了ASP.NET服务器端元素(包括页面、控件)共享的属性、方法和事件。
二、验证控件
1.数据验证控件
1.1.数据验证的方式
后端代码验证 速度慢时间长
JavaScript验证
服务器验证控件
2.非空和比较验证控件
2.1.非空验证控件
RequiredFieldValidator 控件要求用户在页面上输入必填的内容
RequiredFieldValidator 控件常用属性 | |
属性 | 说明 |
ControlToValidate | 要验证的控件ID(所有验证控件都有该属性) |
Text | 验证出错时的提示(所有验证控件都有该属性,一般为*) |
ErrorMessage | 提交给汇总控件的错误信息(所有验证控件都有该属性)如果Text属性为空,则验证出错,将显示该信息 |
2.2.比较验证控件
CompareValidator控件用于执行数据类型检查,或比较一个值和另外一个值,以确定这两个值是否与比较运算符指定的关系相匹配
CompareValidator控件常用属性 | |
属性 | 说明 |
ControlToValidate | 要验证的控件ID(所有验证控件都有该属性) |
ControlToCompare | 用于与要验证的控件进行比较的控件的ID |
Type | 设置比较类型(如字符串,整型等)不同类型比较会出错 |
Operator | 设置比较运算符,如等于(Equal)、大于等于(GreaterThanEqual)、小于等于(LessThanEqual)、大于(GreaterThan)、小于(LessThan)。默认设置为等于 |
ValueToCompare | 用于比较的值 |
3.范围和正则表达式验证控件
3.1.范围验证控件
RangeValidator控件用于检查输入的值是否在确定的最小值和最大值之间
RangeValidator控件常用属性 | |
属性 | 说明 |
ControlToValidate | 要验证的控件ID(所有验证控件都有该属性) |
MaximumValue | 范围的上界(最大值) |
MinimumValue | 范围的下界(最小值) |
Type | 验证类型(字符串、整型、双精度、日期和货币5种) |
3.2.正则表达式验证控件
ReqularExpressionValidator控件用于检查用户的输入是否与预定义的正则表达式相匹配
常见的正则表达式 | |
非负数(正整数+0) | ^\d+$ |
正整数 | ^[0-9]*[1-9][0-9]*$ |
匹配中文字符的正则表达式 | [\u4e00-\u9fa5] |
匹配双字节字符(包括汉字在内) | [^\x00-\xff] |
货币(非负数·,要求小数点后有两位数字) | \d+(\.\d=d)? |
货币(正数或负数) | (-)?\d+(\.\d=d)? |
4.自定义验证控件
4.1.自定义验证控件
CustomValidator控件用于执行自定义验证
CustomValidator控件常用属性和事件 | |
属性 | 说明 |
ControlToValidate | 要验证的控件ID(所有验证控件都有该属性) |
ClientValidationFunction | 设置客户端验证的脚本函数 |
ServerValidate(事件) | 服务器端验证的方法 |
4.2.错误汇总验证控件
ValidationSummary控件用于在页面上显示所有验证错误的摘要,他收集本页中所有验证控件的错误信息(ErrorMessage属性),进行组织并统一显示
ValidationSummary控件常用属性 | |
属性 | 说明 |
ShowMessageBox | 是否显示弹出的提示消息 |
ShowSummary | 是否显示该报告内容 |
三、高级控件
1.母版页与内容页
1.1.母版页简介
以.master为后缀名的文件,可以实现页面统一布局
1.2.母版页的使用
添加——添加新项——Web窗体母版页
注意:在母版页中可以使用多个ContentPlaceHolder控件,但要确保至少用一个该控件
1.3.内容页
添加——添加新项——包含母版页的Web窗体
2.FileUpload文件上传控件
FileUpload控件的主要功能是向指定目录上传文件,该控件包含一个文本框和一个浏览按钮
不会自动上传文件,而必须设置相关的事件处理程序,在程序种实现文件上传。
FileUpload控件的主要属性和方法 | |
属性 | 说明 |
HasFile | 控件是否含有将要上传的文件 |
FileName | 上传文件的文件名 |
SaveAs(函数) | 将上传文件保存到服务器指定的路径 |
例:使用FileUpload控件控件上传图片文件到服务器,并且将上传的图片显示在页面上
<%@ Page Title="" Language="C#" MasterPageFile="~/dmy.Master" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="demo3.WebForm2" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<h1>我是文件上传页</h1>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传" />
<asp:Image ID="Image1" runat="server" />
<asp:Label ID="Label1" runat="server"></asp:Label>
</asp:Content>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace demo3
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
//1.判断是否有文件
if (FileUpload1.HasFile)
{
//2.判断文件后缀名
string fileName = FileUpload1.FileName;
//2.1.获取文件后缀名
string filefex = fileName.Substring(fileName.IndexOf(".")).ToLower();
//判断是否是图片
string[] picType = { ".png", ".gif", ".jpg", ".jpeg",".png" };
if (picType.ToList().IndexOf(filefex) != -1)
{
//2.2.指定文件放置的路径
string url = Server.MapPath("~/pic/")+fileName;
//3.把文件保存到服务器上面
FileUpload1.SaveAs(url);
//显示文件
Image1.ImageUrl = "~/pic/"+FileUpload1.FileName;
Label1.Text = "文件上传成功";
}
else
{
Response.Write("<script>javascript:alert('你上传的不是图片')</script>");
}
}
else
{
Response.Write("<script>javascript:alert('你还未上传文件')</script>");
}
}
}
}
注意:Server.MapPath("~/")获取的是服务器站点的根目录
3.文件下载
3.1.超链接实现文件下载
<%@ Page Title="" Language="C#" MasterPageFile="~/dmy.Master" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="demo3.WebForm3" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<h1>文件下载</h1>
<a href="/pic/图片.rar">点击下载</a>
<a href="/pic/图片.jpeg" download="/pic/图片.jpeg">点击下载</a>
</asp:Content>
3.2.ASP.NET Response对象的TransmitFile()方法提供文件下载
<%@ Page Title="" Language="C#" MasterPageFile="~/dmy.Master" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="demo3.WebForm3" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<h1>文件下载</h1>
<asp:Button ID="Button1" runat="server" Text="下载" OnClick="Button1_Click" />
</asp:Content>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace demo3
{
public partial class WebForm3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.ContentType = "application/x-rar-compressed";//指定下载类型
Response.AddHeader("Content-Disposition", "attachment;filename=图片.rar");//指定文件的下载名称
string filename = Server.MapPath("~/pic/图片.rar");//指定下载路径
Response.TransmitFile(filename);//根据下载路径传输文件
}
}
}
4.TreeView控件
4.1.站点地图
添加——新建项——web——常规——站点地图
以web.sitemap命名的文件,且需要存储于站点的根目录下。web.sitemap文件内容是以XML所描述的树状结构文件,其中包括了站点的结构信息。ASP.NET的导航控件的网站导航信息和超链接的数据均由web.sitemap文件提供
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="" title="后台管理页面" description="">
<siteMapNode url="" title="登录" description="" />
<siteMapNode url="" title="注册" description="" />
</siteMapNode>
</siteMap>
节点描述:
siteMap:根节点,一个站点地图只能有一个siteMap元素
siteMapNode:对应于页面的节点,一个节点描述一个页面
title:页面描述
url:文件路径
description:说明性文本
注意:
站点地图根节点为<siteMap>元素,每个文件有且仅有一个根节点
<siteMap>下一级有且就有一个<siteMapNode>节点
在站点地图中,同一个url仅能出现一次
站点地图文件指定的页面关系是逻辑关系,而不是存储位置间的关系
4.2.TreeView控件的使用
TreeView控件由一个或多个节点构成,TreeView控件中的每一