ASP.NET Web程序设计笔记

7 篇文章 0 订阅

一、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控件中的每一项被称为一个节点,由TreeNode对象表示。TreeView控件最上层的节点称为根节点,再下一层节点称为父节点,父节点下面的节点称为子节点,如果子节点下面没有任何节点,则称为叶节点。

4.2.1.采用站点地图作为TreeView控件的数据源

拖入TreeView控件——小三角选择数据源——新建数据源——站点地图——确定

4.2.2.采用XML文件作为TreeView控件的数据源

TreeView控件不常用于显示导航,而是呈现网站后台管理页面的主菜单

拖入TreeView控件——小三角选择数据源——新建数据源——XML——确定——弹出配置数据源-数据文件选择文件——确定——编辑数据绑定 NavigateUrlField——url  TextField——title

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="" title="后台管理页面"  description="">
	  <siteMapNode url="WebForm1.aspx" title="首页"  description="" >
		  <siteMapNode url="" title="登录"  description="" />
		  <siteMapNode url="" title="注册"  description="" />
	  </siteMapNode>
	  <siteMapNode url="WebForm2.aspx" title="上传文件"  description="" >
		  <siteMapNode url="" title="压缩文件"  description="" />
		  <siteMapNode url="" title="下载文件"  description="" />
	  </siteMapNode>
	  <siteMapNode url="WebForm3.aspx" title="下载文件"  description="" >
		  <siteMapNode url="" title="直接下载"  description="" />
		  <siteMapNode url="" title="超链接下载"  description="" />
	  </siteMapNode>  
  </siteMapNode>
</siteMap>

四、系统对象

1.Page对象

在ASP.NET中,基本内置对象包括Page对象、Request对象、Response对象、Session对象、Cookie对象、Application对象和Server对象,所有页面的基类对象是Page

ASP.NET中常见的系统对象
对象名说明
Page对象Page对象是指页面自身的方式,在整个页面的执行期内都可以使用该对象
Request对象此对象封装了由Web浏览器或其他客户端生成的HTTP请求的细节(参数、属性和数据),提供从浏览器读取信息或客户端信息等功能,用于页面请求
Response对象此对象封装了返回到HTTP客户端的输出,用于向浏览器输出信息或发送指令
Session对象为某个用户提供共享信息,作用于用户会话期
Cookie对象保存在页面客户端的一种储存信息的方式
Application对象为所有用户提供共享信息,作用于整个应用程序运行期
Server对象他提供了服务器端的一些属性和方法,如页面文件的绝对路径等

1.1.Page对象的简介

每一个aspx页面都对应一个页面类,它继承于System.Web.UI.Page类。Page对象就是此页面类的实例,即每一个页面就是一个Page对象。aspx页面在运行的过程中被编译为Page对象,并缓存于服务器内存中

1.2.Page对象的使用 

Page对象的常见属性及其说明
属性说明
IsPostBackBool值,指示该页面是否为响应客户端回发而加载,或其是否正被首次加载或访问
IsValidBool值,指示该页面验证是否成功
MasterPageFile用于获取或设置母版页的文件名
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="login.aspx.cs" Inherits="WebApplication1.login" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            
            登录页面
            <br />
            用户名<asp:TextBox ID="txtUserName" name="user" runat="server"></asp:TextBox>
            密码<asp:TextBox ID="txtPWD" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" Text="登录" OnClick="Button1_Click" />
        </div>
    </form>
</body>
</html>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                txtUserName.Text = "请输入用户名";
                txtPWD.Text = "请输入8位密码";
            }
            
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            
            //JS代码,弹窗,欢迎你
            string name = txtUserName.Text;
            Response.Write("<script>alert('欢迎你'+name)</ script > ");
            
        }
    }
}

2.Response对象

用于将数据从服务器发送回浏览器,它允许将数据作为请求的结果发送到浏览器中,并提供有关响应的信息,可用于在页面中输入数据和在页面中跳转,还可以传递各个页面的参数

Response对象常见的属性和方法
属性/方法说明
Cookies获取响应的CooKie集合
Write()将信息写入HTTP响应输入流
Redirect()将客户端重定向到新的URL

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="login.aspx.cs" Inherits="WebApplication1.login" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <%string userName = Request["user"]; %>//前端写后端代码
            登录页面
            <br />
            用户名<asp:TextBox ID="txtUserName" name="user" runat="server"></asp:TextBox>
            密码<asp:TextBox ID="txtPWD" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" Text="登录" OnClick="Button1_Click" />
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                txtUserName.Text = "请输入用户名";
                txtPWD.Text = "请输入8位密码";
            }
            Response.Write("当前根路径:" + Server.MapPath(""));
            Response.Write("<br/>");//换行
            Response.Write(Server.HtmlDecode("&lt;br/&gt;"));
            Response.Write("当前Content文件夹路径:" + Server.MapPath("~/Content"));

            Response.Write(Server.HtmlEncode("<br/>"));//输出<br/>
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write("ASP.NET,你好");
            //JS代码,弹窗,欢迎你
            string name = txtUserName.Text;
            Response.Write("<script>alert('欢迎你'+name)</ script > ");
            Response.Redirect("About.aspx?user=" + txtUserName.Text+"密码="+txtPWD.Text);
        }
    }
}

3.Request对象

用于检索从浏览器向服务器所发送的请求中的信息,它提供对当前页请求的访问

Request对象常见的属性和方法
属性/方法说明
QueryString取得GET请求中的数据
Form取得POST请求中的数据
Request取得POST或GET请求中的数据

3.1.使用QueryString属性获取页面间传值

在两个页面之间,URL参数传值是常见的GET传值方式

传值:URL?参数=值

接收:值=Request.QueryString["参数"]

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication1.WebForm2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <a href="WebForm3.aspx?id=1">超链接传递参数</a>
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class WebForm3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request.QueryString["id"] != null && Request.QueryString["id"] != String.Empty)
                {
                    string value = Request.QueryString["id"];
                    Response.Write("接收到的参数为" + value);
                }
            }
        }
    }
}

3.2.使用Form属性获取页面间传值

通过Form表单提交的数据(通常是POST传值),可以用Request.Form属性来获取

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <%string userName = Request["user"]; %>
    用户名是:<%=userName %>
    <form id="form1" runat="server">
        <div>
            <input type="text" name="user" />
            <input type="submit" name="提交" />
        </div>
    </form>
</body>
</html>

注意:<%%>表示aspx页面上的服务端代码,可以和HTML、JS等客户端代码并存于页面源代码中,<%=%>用于输出服务端的非私有变量 

4.Server对象

提供了对服务器上的方法和属性的访问,用于访问服务器上的资源,其类名称是HttpServerUtility

Server对象的常用属性和方法
属性/方法说明
HtmlEncode对字符串进行编码,使其在浏览器中正确显示
HtmlDecode与HtmlEncode相反,对已编码的内容进行解码
MapPath返回Web服务器,指定与虚拟路径相对应的物理文件路径
UrlEncode对URL地址进行编码,URL在传输含有#&等特殊符号的参数时需要进行编码。否则其后的内容不会被识别
UrlDecode与UrlEncode相反,对已编码的URL进行解码

Server.MapPath(string path) ;

path参数为网站的虚拟路径,如果为null,则返回站点应用程序所在目录的物理路径

~/当前路径 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="WebApplication1.WebForm3" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        Server.HtmlEncode:<%Response.Write(Server.HtmlEncode("<br>")); %>
        <br />
        Server.UrlEncode:<%Response.Write(Server.UrlEncode("defaut.aspx?name=王")); %>
    </form>
</body>
</html>

五、页面状态管理

1.Cookie对象

在ASP.NET中,Cookie用于在客户端浏览器中存储少量信息,通常存放非敏感的用户信息,保存时间可以根据用户的需要设置。

Cookie保存的数据信息是以文本的形式保存在客户端,不占用服务器资源

Response.Cookies["名称"].Value=值;   集合

String 变量名=Request.Cookies["名称"].Value;     类

 Cookie所对应的类是HttpCookie,所有另一种添加Cookie值的语法是

HttpCookie cookie =new HttpCookie("名称",值);

Response.Cookies.Add(cookie);

由于Cookie是保存在客户端的文本文件,为确保其安全性,一般不要将敏感的信息保存在Cookie中,如用户密码等,如果一定要保存,则需要加密保存信息

Cookie对象的常见属性如下:

Name:Cookie变量的名称

Value:取得或设置Cookie变量的值

Expires:用于设定Cookie的过期时间

注意:如果没有设定Cookie的过期时间,则Cookie的生命周期仅保持到关闭浏览器为止。如果将过期时间设定为MaxValue,则Cookie永不过期

由于大多数浏览器对Cookie的大小限制为4KB,所有Cookie中不能存储大量数据

如果浏览器设定了禁用Cookie,则程序中用到的Cookie对象无效

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="login.aspx.cs" Inherits="WebApplication1.login" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            用户名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
            密码:<asp:TextBox ID="TextBox2" runat="server" TextMode="Password"></asp:TextBox>
            <br />
            <asp:CheckBox ID="CheckBox1" runat="server" Text="记住密码" />
            <br />
            <asp:Button ID="Button1" runat="server" Text="登录" OnClick="Button1_Click" />
        </div>
        
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request.Cookies["userName"]!=null && Request.Cookies["userPwd"] != null)
                {
                    TextBox1.Text = Server.UrlDecode(Request.Cookies["userName"].Value);
                    //TextBox2.Text = Server.UrlDecode(Request.Cookies["userPwd"].Value);
                    TextBox2.Attributes.Add("value", Request.Cookies["userPwd"].Value);
                }
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            //两种方式创建
            //第一种类的方式
            string user = TextBox1.Text;
            string pwd = TextBox2.Text;
            if (CheckBox1.Checked)
            {
                Response.Cookies["userName"].Value = user;
                Response.Cookies["userName"].Expires = DateTime.Now.AddSeconds(60);
                Response.Cookies["userPwd"].Value = pwd;
                Response.Cookies["userPwd"].Expires = DateTime.Now.AddSeconds(60);
            }
            Session["userDmy"] = user;
            Response.Redirect("Self.aspx");
           /*HttpCookie cookieUser=new HttpCookie("userName", user);//创建对象
            cookieUser.Expires = DateTime.Now.AddSeconds(10);//十秒后清除信息
            Response.Cookies.Add(cookieUser);//添加到Cookie集合
            Response.Write("你的账户名称是:" + Response.Cookies["userName"].Value);//通过索引名称获取值

            //第二种集合
            Response.Cookies["user2"].Value = user;
            Response.Cookies["user2"].Expires = DateTime.Now.AddSeconds(30);//30秒后清除信息
            Response.Write("你的账户2名称是:" + Response.Cookies["user2"].Value);//通过索引名称获取值*/
        }
    }
}

2.Session对象

用于存储在多个页面之间传递的特定用户的信息,仅针对会话中的特定用户,不同的客户端或不同的用户无法互相访问。当网站用户关闭浏览器或超过设定的Session对象的有效时间时,Session对象变量就会销毁。Session是服务端数据,储存于服务器端。

Session是一个集合,可以使用索引来访问

赋值:Session["名称"]=值;

取值:变量=Session["名称"];

 Session对象有如下特点:

  Session对象包含某一个用户的状态信息,此信息仅面向该连接,不与其他用户共享

  当会话超时或过期,服务器会即刻清除Session对象,释放所有资源

会话通过SessionID传递状态信息,客户端仅知道SessionID,但对其状态信息不可见

Session对象维护数据的方法
方法说明
Abandon()取消当前会话
Clear()从会话对象中移除所有的键和值
Remove()删除会话对象中的项

由于Session保留在服务器端,需要占用服务器的内存资源,如果储存大量信息,当站点访问量过大时,将影响服务器端的性能。所有通常只将登录状态、用户基本信息和购物车基本信息等少量数据保存在Session中

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            用户名:<%=Session["UserName"] %>
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.TextBox1.Text.Trim()!=string.Empty)
            {
                Session["UserName"]=this.TextBox1.Text;
                Response.Redirect("UserIndex.aspx");
            }
        }
    }
}

例:如果未登录,3秒后跳转

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Self.aspx.cs" Inherits="WebApplication1.Self" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script type="text/javascript">
        let count = 3;
        function goTime() {
            document.write("你还未登录" + count + "秒后跳转登录页面");
            count--;
        }
        function goLogin() {
            setTimeout(function () { window.location.href = "Login.aspx" }, 3000);
        }
    </script>
</head>
<body>
    <%
        if (!flag)
        {
            Response.Write("<script>setInterval(goTime(),1000)</script>");
            Response.Write("<script>goLogin()</script>");
        }
        %>
    <form id="form1" runat="server">
        <div>
            <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
        </div>
    </form>
</body>
</html>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class Self : System.Web.UI.Page
    {
        public static bool flag = true;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Session["userName1"] != null)
                {
                    Label1.Text = "欢迎你:" + Session["userName1"];
                    flag = true;
                }
                else
                {
                    //后端跳转
                    //Response.Redirect("Login.aspx");
                    flag = false;
                }
            }
        }
    }
}

3.Application对象

用于共享应用程序级信息,即多个用户共享一个Application对象。当第一个用户请求ASP.NET文件时,将启动应用程序并创建Application对象。一旦Application对象被创建,在整个应用程序中都可以访问该对象的值,直到应用程序结束。在应用程序关闭之前,Application对象将一直存在。所有Application对象是用于启动和管理ASP.NET应用程序的主要对象

Application对象与Session对象用法相同

赋值:Application["名称"]=值;

取值:变量=Application["名称"];

 Application对象与Session对象的主要区别是Session对象中的数据只能被单个用户在多个页面中访问和修改,会话结束后就不能访问。而Application对象中的数据能被多个用户在多个页面中访问并修改,会话结束后,其他用户还能访问Application中的数据,只有Web应用程序结束后才能销毁。

因为Application对象中数据能由多人操作,即添加、修改和读取,此时可能会出现修改冲突的问题,所有Application对象包含lock()方法和unlock()方法,分别在修改数据前使用lock()方法锁定数据,在修改完数据后使用unlock()方法解锁数据

注意:只有当所有用户关闭了Web应用程序连接后,Web应用程序才会结束。因为一般这种情况很难遇到,所有保存在Application中的数据将会在内存中保存很长时间,因此一般不建议将大量数据保存在Application对象中

例:漂流瓶案例

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="demo5._3.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
        body {
            width: 100%;
            background: url(img/Sea.png);
            background-size: 100% 100%;
            height: 100vh;
            background-repeat: no-repeat;
            background-position: right;
            margin: 0px auto;
            text-align: center
        }
        
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div class="tools">
            <h1>漂流瓶</h1>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <div>
                <asp:Label ID="Label1" runat="server" Text="留言:" Font-Bold="true"></asp:Label>

                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                <br />
                <br />
                <br />
                <br />
                <br />
                <div>
                    <asp:Image ID="Image1" runat="server"  ImageUrl="~/img/1.jpeg" Width="60px" />
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<asp:Image ID="Image2" runat="server"  ImageUrl="~/img/3.jpeg" Width="60px" Height="60px" />

                </div>
                <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="扔一个" Height="27px" /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <asp:Button ID="Button2" runat="server" Text="捞捞看" Height="26px" OnClick="Button2_Click" />
                <br />
                <asp:Label ID="Label2" runat="server" Text=""></asp:Label>
                <br />


            </div>
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace demo5._3
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            //扔漂流瓶
            //application 加数据
           List<string> bottlesList= Application["bottles"] as List<string>;//获取(创建)application对象
            if (bottlesList==null)
            {
                //为空 创建
                bottlesList= new List<string>();
                bottlesList.Add("走,厦门");
                bottlesList.Add("走,成都");
                bottlesList.Add("走,西藏");
                bottlesList.Add("走,西安");
                bottlesList.Add("走,北京");
                bottlesList.Add("走,青海");
                bottlesList.Add("走,平潭");
                bottlesList.Add("走,云南");
                bottlesList.Add("走,杭州");
            }
            bottlesList.Add("漂流瓶:" + TextBox1.Text);
            Application["bottles"] = bottlesList;
            TextBox1.Text = "";
            Label2.Text = "你用了洪荒之力扔了一个漂流瓶";
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            //捞漂流瓶
            //判断有没有
            List<string> bottlesList= Application["bottles"] as List<string>;
            if (bottlesList!=null)
            {
                //有漂流瓶
                //随机
                int Bindex= new Random(DateTime.Now.Millisecond).Next(bottlesList.Count);
                Label2.Text = (Bindex==0?"啥也没有":"你捞到了"+ bottlesList[Bindex]);
            }
            else
            {
                Label2.Text = "大海里没有任何漂流瓶";
            }
        }
    }
}

4.Session购物车综合案例

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="shopping.aspx.cs" Inherits="demo5._3.shopping" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
        .contain{
            display:flex;
        }
        img{
            width:200px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
            <div class="contain">
            <div >
                <dl>
                    <dt>
                        <img src="img/Bracelet_big.jpg" /></dt>
                    <dd>惠普</dd>
                    <dd>¥3452</dd>
                    <dd><a href="CarList.aspx?id=1">加入购物车</a></dd>
                </dl>
            </div>
            <div>
                <dl>
                    <dt>
                        <img src="img/Phone_big.jpg" /></dt>
                    <dd>手机</dd>
                    <dd>¥3452</dd>
                    <dd><a href="CarList.aspx?id=2">加入购物车</a></dd>
                </dl>
            </div>
            <div>
                <dl>
                    <dt>
                        <img src="img/Watch_big.jpg" /></dt>
                    <dd>手表</dd>
                    <dd>¥3400</dd>
                    <dd><a href="CarList.aspx?id=3">加入购物车</a></dd>
                </dl>
            </div>
        </div>
    
    </form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CarList.aspx.cs" Inherits="demo5._3.CarList" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace demo5._3
{
    public partial class CarList : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //判断ID是否有
            if (Request.QueryString["id"]!=null)
            {
                string GoodId = Request.QueryString["id"];
                //是否有Session
                if (Session["car"]!=null)
                {
                   Dictionary<string,int> car= Session["car"] as Dictionary<string, int>;
                    if (car.ContainsKey(GoodId))
                    {
                        int num = (int)car[GoodId];
                        car[GoodId] = num + 1;
                    }
                    else
                    {
                        car.Add(GoodId,1);
                    }
                    Session["car"] = car;
                }
                else
                {
                    Dictionary<string,int> car= new Dictionary<string, int>();
                    car.Add(GoodId, 1);
                    Session["car"]=car;
                }
                //创建Session
                //放商品id 数量
                //有 id+1

            }
            showCar();
        }
        public void showCar()
        {
            //获取Session对象
            Dictionary<string, int> car= Session["car"] as Dictionary<string, int>;
            string carHtml = "<table><tr><td>商品ID</td><td>商品数量</td></tr>";
            foreach (var item in car)
            {
                carHtml += "<tr><td>"+item.Key+"</td><td>"+item.Value+"</td></tr>";
            }
            carHtml += "</table>";
            Label1.Text = carHtml;
        }
    }
}

六、三层架构

1.三层架构的概述

1.1.三层架构简介

减少模块间的耦合性、提高独立性的系统设计要求

1.1.1.数据访问层(DAL):主要用于实现对数据库的访问和操作

1.1.2.业务逻辑层(BLL):主要包含业务逻辑代码以及作为表现层和数据访问层之间的通信桥梁,负责数据的传递和处理。

1.1.3.表现层(Web):用于显示数据和接收用户输入的数据,为用户提供可以交互的操作界面及表现逻辑

1.2.三层架构的优势

1.2.1.适于变化,利于维护。

1.2.2.适用于协作开发。

1.2.3.主流趋势

2.模型层与数据层

2.1.模型层Model

因为三层之间存在数据交互,所以需要中间介质——模型层,模型层包含所有与数据表相对应的实体类。三层之间通过传输实体类对象来实现通信

2.1.1.模型层命名

常见的命名方式有Model、Models或用解决方案名+Model的格式命名

2.1.2.实体类结构

只需对应数据字段编写出实体类的属性即可,除了构造方法,实体类通常不含其他方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Models
{
    [Serializable]
    public class Product
    {
        
        public int ProductID { get; set; }
        public string ProductName { get; set; }
        public string ProductPic { get; set; }
        public decimal ProductPrice { get; set; }
        public string ProductDesc { get; set; }
        public int ClassID { get; set; }
        public DateTime AddTime { get; set; }
    }
}

2.2.数据访问层DAL

数据访问层(Data Access Layer)负责与数据库的交互,运行数据库查询并执行更新。无论数据存储介质是什么,数据访问层都会提供同样的服务。一般情况下,表现层和数据访问层无须直接通信

2.2.1.数据访问层的命名

以DAL命名或者以解决方案名称+DAL的格式

2.2.2.数据访问类中的方法

对数据表的增删改查

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Models;
using DAL;
using System.Data.SqlClient;

namespace DAL
{
    public class ProductServer
    {
        //select * from Product where ClassID=4
        public List<Product> GetProductsByClassID(int classID)
        {
            
            List <Product> products = new List<Product>();
            string sqlString = "select * from Product where ClassID=" + classID;
            SqlDataReader dr = DBHelper.CX(sqlString);
            while (dr.Read())//拿下一条数据
            {//拿到下一条数据,填充list
                Product pt = new Product();
                pt.ProductID = dr.GetInt32(0);//顺序与数据库顺序一致0123
                pt.ProductName = dr.GetString(1);
                pt.ProductPic = "~/images/"+dr.GetString(2);
                pt.ProductPrice = dr.GetDecimal(3);
                pt.ProductDesc = dr.GetString(4);
                pt.ClassID = dr.GetInt32(5);
                pt.AddTime = dr.GetDateTime(6);
                products.Add(pt);//加到list里面
            }
            dr.Close();
            return products;//返回list
        }
        //delete from Product where ProductID=12
        public bool DeleteProduct(int productID)
        {
            /*bool rs = true;*/
            string sqlString = "delete from Product where ProductID="+@productID;
            SqlParameter[] parameters = new SqlParameter[]
            {
                new SqlParameter("@productID",System.Data.SqlDbType.Int)
            };
            parameters[0].Value = productID;
            /*DBHelper.ZSG(sqlString);*/
            /*return rs;*/
            return DBHelper.ZSG(sqlString,parameters);
        }
        /*update Product
        set ProductName = '西葫芦',
        ProductPic = '6.png',
        ProductDesc = '不爱吃',
        ClassID = 4,
        AddTime = GETDATE()
        where ProductID = 6*/
        public bool updateProduct(int productID,Product product)
        {
            string sqlStr = "update Product set ProductName =@ProductName," +
                "ProductPic = @ProductPic," +
                "ProductDesc =@ProductDesc," +
                "ProductPrice =@ProductPrice," +
                "ClassID = @ClassID," +
                "AddTime =@AddTime  " +
                "where ProductID =@ProductID ";
            SqlParameter[] parameters = new SqlParameter[] {
                new SqlParameter("@ProductName",product.ProductName),
                new SqlParameter("@ProductPic",product.ProductPic),
                new SqlParameter("@ProductDesc",product.ProductDesc),
                new SqlParameter("@ProductPrice",product.ProductPrice),
                new SqlParameter("@ClassID",product.ClassID),
                new SqlParameter("@AddTime",product.AddTime),
                new SqlParameter("@ProductID",productID)
            };
            return DBHelper.ZSG(sqlStr,parameters);
        }
    }
}

3.业务层的搭建以及与数据层之间的调用

业务逻辑层(Business Logic Layer)BLL包含一系列执行于数据上的操作。

业务逻辑层是分层的分层系统的核心,包含了系统的核心逻辑,是连接数据访问层和表现层的中间层。

3.1.业务逻辑层的命名

通常命名为BLL或用解决方案名称+BLL的格式命名

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Models;
using DAL;

namespace BLL
{
    public class ProductManager
    {
        ProductServer ps = new ProductServer();
        public List<Product> GetProductsByClassID(int classID)
        {
            //return new ProductServer().GetProductsByClassID(classID);
            return ps.GetProductsByClassID(classID);


        }
        public bool DeleteProduct(int productID)
        {
            //return new ProductServer().DeleteProduct(productID);
            return ps.DeleteProduct(productID);
        }
        public bool updateProduct(int productID, Product product)
        {
            return ps.updateProduct(productID, product);
        }
    }
}

4.表现层与三层之间调用

 表现层由两个主要组件组成,分别是用户界面aspx和表现层逻辑cs。

表现层命名:以解决方案名称+Web格式命名,或用解决方案名称+UI格式命名

引用:

Web——>BLL+Models

BLL——>DAL+Models

DAL——>Models

七、数据绑定控件(一)

1.数据绑定控件

在ASP.NET中,所有的数据绑定控件都从BaseDataBoundControl抽象类派生

BaseDataBoundControl的属性和方法
属性/方法描述
DataSource指定数据绑定控件的数据来源,程序会从该数据源中获取数据并显示
DataBind()显示绑定的数据
常用数据绑定控件
数据绑定控件描述
DropDownList下拉数据绑定控件
RepeaterRepeater控件是一个数据绑定容器控件,用于生成各个子项的列表,这些子项的显示方式可以完全由编程者自己编写,不支持分页、排序和编辑,仅提供重复模板内容
GridView以表格的形式进行数据显示,有自带分页,支持删、改、排序、分页、外观设置以及自定义显示数据
DetailsViewDetailsView控件以表格形式显示数据,且一次仅显示数据源的单条记录,并且<table>标签下的每行(<tr>标签)表示记录中的一个字段。这个控件同样支持数据的编辑、插入和删除操作,并可以轻松地设置分页功能
DataListDataList控件,类似于Repeater控件,用于显示限制于该控件的项目的重复列表。不过,DataList控件会默认地在数据项目上添加表格,且具有内置样式设置
ListView按照编程者编写的模板格式显示数据。与DataList和Repeater控件相似 ,提供了增删改、排序和分页等功能,还可以支持用户自定义模板
FormViewFormView控件与DetailsView控件很相似,FormView控件仅可显示数据源中的单条记录

1.1.数据绑定的原理

首先要设置控件的数据源的数据的显示格式,设置完成后,控件就会自动处理剩余的工作以把要显示的数据按照要显示的格式显示在页面上

1.2.数据绑定的类型 

1.2.1.单值绑定

<%=XXX%>内联引用方式,可以引用C#代码

<%# XXX%>可以引用.cs文件中的代码的字段,但这个字段必须在初始化后,在页面的Load事件中使用Page.DataBind()方法来实现

<%$ XXX%>可以引用Web.config文件中预定义的字段或者已注册的类

<%# EAVL(XXX)%>类似于JavaScript,数据源也需要绑定

1.2.2.多值绑定

多指绑定可以显示一个表中的所有内容,同单值绑定不一样,这种类型的数据绑定需要支持她的特殊控件

注意:如果数据绑定表达式作为属性的值,只要数据绑定表达式中没有出现双引号,那么<%#数据绑定表达式%>的最外层用双引号或者单引号都可以,如果数据绑定表达式中出现双引号,则<%#数据绑定表达式%>的最外层最好要用单引号

提示:

指定数据绑定控件的DataSource(数据源)属性,并调用DataBind()方法才能够显示绑定的数据

控件指定的数据源必须可枚举,实现了ICollection、IEnumerable或IListSource接口的对象都可以绑定

2.DropDownList控件

用于显示下拉列表框,且只能选择下拉列表框中的一项。DropDownList控件在客户端被解释成<select></select>的HTML标记

DropDownList的常见属性
属性描述
AutoPostBack用于设置当下拉列表项发生变化时,是否主动向服务器提交整个表单,默认false,即不主动提交。如果设置为true,则可执行SelectedIndexChanged事件处理方法
DataTextField设置列表项的可见部分的文字
DataValueField设置列表项的值部分
Items获取控件的列表项的集合
SelectedIndex获取或设置DropDownList控件中的选定项的索引
SelectedItem获取列表控件中索引最小的选定项
SelectedValue获取列表控件中选定项的值,或选择列表控件中包含指定值的项

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DataBingDemo1.aspx.cs" Inherits="StudentUI.DataBingDemo1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            商品分类:<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;

namespace StudentUI
{
    public partial class DataBingDemo1 : System.Web.UI.Page
    {
        
        protected void Page_Load(object sender, EventArgs e)
        {
            
            Page.DataBind();//绑定值并调用DataBind显示
            DropDownList1.DataSource = new ProductClassManager().GetProductClassesByID(0);
            DropDownList1.DataTextField = "className";
            DropDownList1.DataValueField = "classId";
            DropDownList1.DataBind();
        }
        
    }
}

3.DataList控件

使用模板与定义样式来显示数据,并执行数据的选择、删除和编辑。

DataList控件最大的特点是通过模板来定义数据的显示格式,需要通过页面语法设计出较为美观的界面,不同于GridView控件每行只能显示一条记录,DataList可以在一行显示多条记录

DataList支持多种模板,必须使用的模板是ItemTemplate

DataList的属性
属性/方法描述
RepeatColumnsDataList中显示的列数默认是0
RepeatDirectionDataList的显示方式有Horizontal和Vertical两个值,分别代表水平和垂直显示

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DataBingDemo1.aspx.cs" Inherits="StudentUI.DataBingDemo1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:DataList ID="DataList1" runat="server" RepeatColumns="5" RepeatDirection="Horizontal">
                <ItemTemplate>
                    <table style="text-align:center" >
                        <tr><td>
                            <asp:Image ID="Image1" ImageUrl='<%#Eval("ProductPic") %>' runat="server" /></td></tr>
                        <tr><td>
                            <asp:Literal ID="Literal2" Text='<%#Eval("ProductName") %>' runat="server"></asp:Literal></td></tr>
                        <tr><td>
                            <asp:Literal ID="Literal3" Text='<%#Eval("ProductPrice","{0:C3}") %>' runat="server"></asp:Literal></td></tr>
                        
                    </table>
                </ItemTemplate>
            </asp:DataList>
        </div>
        
        
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;

namespace StudentUI
{
    public partial class DataBingDemo1 : System.Web.UI.Page
    {
       
        protected void Page_Load(object sender, EventArgs e)
        {
            DataList1.DataSource = new ProductManager().GetProductsByClassID(4);
            DataList1.DataBind();
        }
        
    }
}

4.Repeater控件

Repeater控件完全由模板驱动,可以任意设置其输出格式。

Repeater控件不生成任何类似于<table>标签的布局代码,他为显示数据库记录提供了最大限度的灵活性。

在使用Repeater控件时,只能在”源“视图中进行编辑


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DataBingDemo1.aspx.cs" Inherits="StudentUI.DataBingDemo1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    
        <div>
            <asp:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                    <div >
                        <dl>
                            <dt>
                                <h3><a href="ProductList.aspx?ClassId=<%#Eval("ClassId") %>"><%#Eval("ClassName") %></a></h3>
                            </dt>

                        </dl>
                    </div>
                </ItemTemplate>
            </asp:Repeater>
        </div>
        
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;

namespace StudentUI
{
    public partial class DataBingDemo1 : System.Web.UI.Page
    {
        
        protected void Page_Load(object sender, EventArgs e)
        {
           Repeater1.DataSource = new ProductClassManager().GetProductClassesByID(0);
            Repeater1.DataBind();
            
        }
    
       
    }
}

八、数据绑定控件(二)

1.GridView数据绑定控件

GridView控件以表格的形式显示数据源的数据,每列表示一个字段,而每行表示一条记录。最大的特点是自动化程度高,可以在不编写代码的情况下实现分页和排序等功能。

GridView控件的常见属性
属性描述
AllowPaging设置是否启用分页功能
Columns获取GridView控件中列字段的集合
PageCount获取在GridView控件中显示数据源记录所需的页数
PageIndex获取或设置当前显示页的索引
PageSize设置GridView控件每次显示的最大记录条数

2.GridView控件的使用

2.1.绑定数据:

GridView控件小三角——编辑列——选中BoundField字段——点击添加(DataField数据源,HeaderText标题)——取消勾选自动生成字段(G)

2.2.绑定图片:

GridView控件小三角——编辑列——选中ImageField——点击添加(数据DataImageUrlField绑定字段,HeaderText标题)

源控件中加<ControlStyle/>样式

2.3.删除操作:

GridView控件小三角——编辑列——选中CommandField列中的”删除“-添加——为GridView控件添加RowDeleting事件

提示:

选择GridView控件中的一行,取得第一个单元格的数据,可使用的写法如下

this.GridView1.Rows[e.RowIndex].Cells[0].Text

2.4.编辑修改操作:

 GridView控件小三角——编辑列——选中CommandField列中的”编辑、更新、取消“-添加——为GridView控件添加RowEditing(处理开启编辑)、RowUpdating(处理修改)、RowCancelingEdit(处理结束编辑)事件

2.5.分页操作:

GridView控件的分页操作常见属性
属性描述
AllowPaging设置是否启用分页功能
PageCount获取在GridView控件中显示数据源记录所需的页数
PageIndex获取或设置当前显示页的索引
PageSize设置GridView控件每次显示的最大记录条数

GridView控件的分页操作常见事件
事件描述
PageIndexChanging页码索引改变触发事件
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ProductGridview.aspx.cs" Inherits="StudentUI.ProductGridview" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowUpdating="GridView1_RowUpdating" PageSize="3">
                <Columns>
                    <asp:BoundField DataField="ProductName" HeaderText="商品名称">
                    <HeaderStyle BackColor="Pink" />
                    </asp:BoundField>
                    <asp:BoundField DataField="ProductPrice" HeaderText="商品价格">
                    <HeaderStyle BackColor="Pink" />
                    </asp:BoundField>
                    <asp:BoundField DataField="ProductDesc" HeaderText="商品描述">
                    <HeaderStyle BackColor="Pink" />
                    </asp:BoundField>
                    <asp:ImageField DataImageUrlField="ProductPic" HeaderText="图片">
                        <ControlStyle Height="70px"/>
                    </asp:ImageField>
                    <asp:CommandField ShowDeleteButton="True" />
                    <asp:BoundField DataField="ProductID" HeaderText="商品ID" ReadOnly="True" />
                    <asp:CommandField ShowEditButton="True" />
                    <asp:BoundField DataField="ClassID" HeaderText="分类ID" />
                    <asp:BoundField DataField="AddTime" HeaderText="添加时间" />
                </Columns>
            </asp:GridView>
        </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Models;
using BLL;


namespace StudentUI
{
    public partial class ProductGridview : System.Web.UI.Page
    {
        ProductManager pm = new ProductManager();
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                bingData();
            }
        }
        public void bingData()
        {
            GridView1.DataSource = new ProductManager().GetProductsByClassID(4);
            GridView1.DataBind();
        }

        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            //执行删除逻辑
            try
            {
                //拿到删除商品的ID
                //ID在第几个单元格
                int ProductId=int.Parse( GridView1.Rows[e.RowIndex].Cells[5].Text);
                //执行删除
                bool rs= new ProductManager().DeleteProduct(ProductId);
                //判断删除结果
                if (rs)
                {
                    Response.Write("<script>alert('删除成功')</script>");
                    bingData();
                }
                else
                {
                    Response.Write("<script>alert('删除失败')</script>");
                }
            }
            catch (Exception)
            {

                throw;
            }
        }

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            //启用编辑
            //让当前行可编辑
            GridView1.EditIndex = e.NewEditIndex;
            bingData();
        }

        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            //取消编辑
            GridView1.EditIndex = -1;
            bingData();
        }

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            //修改操作
            //1.获取想要修改的商品ID
            int productID = int.Parse(GridView1.Rows[e.RowIndex].Cells[5].Text);
            
            Product up = new Product();
            TextBox tb2 = GridView1.Rows[e.RowIndex].Cells[0].Controls[0] as TextBox;
            up.ProductName = tb2.Text;
            TextBox tb3 = GridView1.Rows[e.RowIndex].Cells[3].Controls[0] as TextBox;
            up.ProductPic = tb3.Text;
            TextBox tb4 = GridView1.Rows[e.RowIndex].Cells[1].Controls[0] as TextBox;
            up.ProductPrice =decimal.Parse( tb4.Text);
            TextBox tb5 = GridView1.Rows[e.RowIndex].Cells[2].Controls[0] as TextBox;
            up.ProductDesc = tb5.Text;
            TextBox tb6 = GridView1.Rows[e.RowIndex].Cells[7].Controls[0] as TextBox;
            up.ClassID = int.Parse(tb6.Text);
            TextBox tb7 = GridView1.Rows[e.RowIndex].Cells[8].Controls[0] as TextBox;
            up.AddTime = DateTime.Parse(tb7.Text);
            //2.获取你想要修改的商品信息

            //3.调用编辑
            bool rs = pm.updateProduct(productID,up);
            //4.处理编辑
            if (rs)
            {
                Response.Write("<script>alert('修改成功')</script>");
                GridView1.EditIndex = -1;
                bingData();
            }
            else
            {
                Response.Write("<script>alert('修改失败')</script>");
            }

        }

        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            //分页功能
            GridView1.PageIndex = e.NewPageIndex;
            bingData();
        }
    }
}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
教学内容: 一、Web Form网页的构成 二、ASP.NET程序的处理过程 三、ASP.NET事件及其处理程序 四、Page 类的常用属性 五、Page 类的常用方法 六、Page 类的常用事件 教学目标: — 了解Web Form网页的构成; — 理解ASP.NET程序的处理过程; — 理解网页和控件的事件; — 掌握处理程序的编写方法; — 了解Page类. 前言 第一讲 ASP.NET程序特性 一、Web Form网页的构成 二、ASP.NET程序的处理过程 三、事件及其处理程序 四、Page 类的常用属性 五、Page 类的常用方法 六、Page 类的常用事件 第二讲 HTML和脚本 一、HTML标记 二、HTML语法 三、JavaScript脚本 第三讲 ADO.NET据库访问技术 一、什么是ADO.NET 二、管理提供者类 三、一般性据类 四、常用类的属性和方法 五、访问据库的前期准备 六、连接据库 第四讲 登录和注册页面设计 一、控件概述 二、登录页面和注册页面 三、Label控件 四、TextBox控件 五、Button控件 六、登录页面设计 七、注册页面设计 第五讲 信息浏览页面设计 一、信息浏览页面 二、DropDownList控件 三、ListBox控件 四、Image控件 五、信息浏览页面设计 第六讲 信息收集页面设计 一、信息收集页面 二、CheckBox控件 三、CheckBoxList控件 四、RadioButton控件 五、RadioButtonList控件 六、信息收集页面设计 第七讲 据验证 一、据验证概述 二、非空字段验证 三、类型验证和比较验证 四、据范围验证 五、正则表达式验证 第八讲 Repeater控件应用 一、模板概述 二、项模板 三、交替项模板 四、分隔模板 五、页眉和页脚模板 第九讲 DataList控件应用之一 一、DataList控件 二、模板编辑器 三、属性生成器 四、应用举例 第十讲 DataList控件应用之二 一、选择据 二、编辑据 三、删除据记录 四、分页显示 五、应用举例 第十一讲 DataGrid控件应用之一 一、DataGrid控件概述 二、据字段列设计 三、超级链接列设计 四、按钮列设计 五、应用举例 第十二讲 DataGrid控件应用之二 一、编辑列和删除列 二、模板设计 三、分页功能 四、应用举例 第十三讲 多网页项目 一、向项目中添加网页 二、页面间的跳转 三、使用查询字符串 四、添加网页属性 第十四讲 ASP.NET内部对象 一、内部对象概述 二、状态管理和ViewState 三、Application对象 四、Session对象 五、Server对象 第十五讲 TreeView控件应用 一、初步使用TreeView控件 二、动态添加和删除节点 三、从XML文件读取节点据 四、TreeView控件应用举例
一万多培训费的资料,北京权威的.NET培训机构】 【认真学习后你一定能成为优秀的.net程序员】 学习对象:1.大专及大专以上理工科学历,或有相当学历的理工科教育背景     2.热爱软件编程及软件开发工作 培养目标:IT人才市场紧缺的精通.Net应用开发的软件技术人才。 精通C#.Net、ASP.Net、ADO.Net、AJAX、WEB2.0、XML、JavaScript、SQL Server 2000、Web Service、WSE2.0、.Net Remoting、MultiThread Programming、Socket Programming、Windows Service、Data Structure、 Algorithm、OOA/OOD、UML 、VSS、Rational Rose、Visio等; 掌握Visual Studio .Net 2005开发环境; 熟练开发Web应用程序、Windows应用程序和 基于据库的各种应用程序;熟练开发电子商务软件、电子政务软件和各种信息 管理软件.熟悉面向对象的建模、分析、设计和实施方法.掌握UML建模语言和 Rational Rose、Visio等建模工具。 第一阶段教学内容安排(200课时) 课程名称 课程内容 培训目的 C# 基本语法、面向对象的思想、据结构和算法以及设计模式(120课时) 详细介绍.Net Framework、C# 基本语法、编程规范和编程技巧、面向对象的认识问题和分析问题的思想、以及据结构和常用算法,学习件模式、适配器模式和工厂模式。 深入了解.Net FrameWork、掌握C#语法,学会C#编程,掌握据结构、常用算法和面向对象的思想。 针对循环、组、类的概念、类的构建、类的使用、对象的创建、面向对象的思想、集合、排序、IO操作等知识点先后安排2或3个小型项目:1。制作一个通讯录;2。制作一个小游戏;3。教学管理系统。 通过实际项目深入理解和掌握C# 基本语法、面向对象的思想、类的概念和使用、对象的创建、排序、IO操作等 据库知识和 SQL Server 2000 (40课时) 讲授据库的基本知识和SQL Server 2000, 讲授据库的设计和优化,学习T-SQL 和据库编程,学习存储过程(stored procedure)和触发机制(trigger). 掌握 SQL Server 2000, 学会据库编程, 掌握T-SQL, Stored Procedure, Trigger. C# 高级编程I (40课时) 系统地讲授多线程的基本概念、线程的设计、线程的优先级等以及线程的使用;讲授共享程序集(公有程序集)、私有程序集的组成、原理和使用;学习反射(Reflection)、属性(Attribute)的相关概念和使用。学习流(stream)的概念和IO操作、文件的读写和传输。 掌握多线程编程、文件的操作和程序集的相关概念,学习反射和属性。 第二阶段教学内容安排(400课时) 课程名称 课程内容 培训目的 ASP.Net2.0、ADO.Net2.0和Web 应用程序 (160课时) 系统讲授 ASP.Net2.0、ADO.Net2.0、 基于据库的WEB应用程序、的开发;详细地讲授Web Service及其应用和相关的安全性问题、WSE(Web Services Enhancements)、SOAP、WSDL、UDDI、Windows Service、VSS(Visual Source Safe)。讲授用户控件和第三方控件的开发和使用。学习HTML、XML、JavaScript、水晶报表(Crystal Report)和IIS 基础以及WEB应用程序性能优化;学习Ajax、Web2.0的相关技术。 熟练开发基于据库的Web应用程序、Windows应用程序。熟练开发Windows Service 和 Web Service、Ajax、Web2.0、XML等等. 针对ASP.Net2.0、ADO.Net2.0、Web服务(Web Service)、HTML、XML、JavaScript、水晶报表(Crystal Report)、Ajax、Web2.0等知识点先后安排2或3个小型项目:1。基于Web文件管理系统(File Management System);2。基于Web的咨询系统(基于Web的聊天室);3。论坛系统 通过实际项目深入理解和掌握相关的技术和知识点:Asp.Net、Ajax、 Ado.Net、Web Service等。 Windows 应用程序设计模式和Oracle据库编程(40课时) 系统地讲授Windows应用程序的开发,学习观察者模式和Oracle据库编程。 熟练开发基于据库的Windows应用程序,掌握Oracle据库编程。 C# 高级编程II (40课时) 详细讲授DNS开发、套接字(Socket)编程、TCP、UDP 编程、消息队列(MSMQ)及其编程;详细讲授远程处理(Remoting)技术,包括基本远程处理框架,配置文件及其应用, 异步远程处理技术,租约和生存期控制;系统地讲授Windows服务编程、Com+ 服务、WSE2.0的使用。 掌握 Socket 编程、TCP、 UDP编程、远程处理(Remoting)技术、Windows服务编程;Com+ 服务、WSE2.0等。 OOAD&UML (24课时) 讲授面向对象的分析设计方法、UML 语法及Rational Rose/MS Visio 工具的使用 和VSS的使用。 掌握面向对象的建模、分析、设计和实施方法.学习UML 建模语言和 Rational Rose /MS Visio 建模工具. 项目实习 (120课时) 在培训老师的指导下完成一个实际的电子商务软件项目:” Prepaid Phone Card Online Sales System”。内容包括:Application Architecture Analysis、Creating the Data Model、Design Database Schema、Programming Stored procedures、Web Application Design、App Setting、 Log in Design、 Security、 Authentication、Authorization、 Navigation Bar、Shopping Cart、Cross-Brower Support、Performance. 通过实际项目, 培养学生实战能力,包括系统分析、设计(包括功能需求分析、据库设计、功能模块设计和详细设计)、开发、调试、测试和部署的能力。 总复习 考试与就业指导 (16课时) 串讲全部内容,并且针对实际面试情况,有侧重地进行总体复习。 在整个学习过程中有四次考试,占四个周六的时间。
ASP.NET常见问题集锦.zip . .. .net中中文乱码问题解决.txt ADO.NET 与 XML:双剑合壁,威力强大.doc ASP.NET HTTP 运行时.doc ASP.NET ViewState 初探.doc ASP.NET Web 方法中的 XmlElement 参的功能.d ASP.NET 中 Cookie 的基本知识.doc ASP.NET 页面对象模型.doc asp.net200问-专家门诊—ASP.NET开发答疑 ASP.NetWebPage深入探讨.txt ASP.NET中为DataGrid添加合计字段.doc ASP.NET实现DataGrid据排序.doc asp.net中的弹出对话框.doc ASP.NET中自定义控件的创建和使用.doc ASP.NET实现用户在线检测的类源码.txt ASP.NET常见问题集锦.zip ASP.NET弹出式日历选择控件的实现.doc ASP.NET程序中常用的三十三种代码.txt ASP.NET页面间据传递小结.doc ASPNETXML深入编程.pdf C Primer Plus 5th.chm C#中结构与类的区别.doc C#复习.txt C#实现Web文件上传的两种方法.doc C#排序算法大全.txt C#编程规范.doc C#语言参考.doc Code.doc C#中的“装箱”与“拆箱”.txt Datagrid分页、排序、删除代码.txt DataList分页、增加、删除、修改实例.doc is as override示例.txt JA_ASP lecture_UML MS Press - Programming Microsoft.Net.chm NET 技术交流与实际应用.ppt net窗体身份验证方案.doc OOAD OOAD.doc Oreilly - C#.Net Programming 2nd Edition--ne Sort.cs treeview问题.txt Visual Basic .NET 和 Visual C# .NET 程序员需 vs.net安装部署深入研究.doc WEB_APP_E_BOOK.pdf XML编程从入门到精通.pdf 《ASP.NET完全入门》 一个Web文件上传的C#源代码.doc 为 ASP.NET Datagrid 创建自定义列.doc 为DataGrid写一个DropDownListColumn.txt 从 ASP.NET 服务器控件插入客户端脚本.doc 从 ASPX 页面进行 Web 服务调用时的性能考虑.do 使用 .NET 框架轻松开发完美的 Web 窗体控件.do 使用 TreeView IE Web 控件.doc 关于ASP.Net中的时间处理.txt 关于上下文.doc 创建可分页、可排序的 DataGrid.doc 创建用于 ASP.NET 的分页程序控件.doc 创建用于ASP.NET的分页控件.txt 利用 ASP.NET 创建多页自定义报表.doc 利用属性扩展元据.doc 在 ASP.NET实现会话状态的基础.doc 在ASP.NET程序中实现上传下载文件.doc 复合 Web 控件示例(2.0).doc 如何在ASP.Net中把图片存入据库.txt 如何在DateTime字段里只存储日期部分?.txt 如何用.NET创建Windows服务.doc 委托与事件.doc 学生选课系统事例(老师).txt 学生选课系统示例(自己).txt 开发和使用自定义服务器控件(2005).doc 开发组件.doc 归并排序,快速排序,冒泡算法,二叉查找树.doc 微软C编程精粹.doc 探讨 ASP.NET 的可伸缩性.doc 提高ASP.Net应用程序性能的十大方法.doc 无废话XML.pdf 概念.txt 求最大最小值示例.txt 用ASP.NET创建自定义文本框.doc 电话卡销售电子商务平台系统.doc 笔记.txt 类结构分析.doc 索引器例子.txt 翻译C#.txt 老师quicksort算发(无相等的两个元素).txt 老师quicksort算发(考虑相等的两个元素).txt 老师的学生考试系统改造结果.txt 自定义控件.doc 认识Web.config文件.doc 设计模式迷你手册.chm 设计模式(搞笑).doc 转意字符.txt 进入 ASP.NET 世界 - 第 1 部分:应用程序规划 进入 ASP.NET 世界 - 第 2 部分:使用 SQL Serv 面向对象设计(OOD)思想(C#) - c-c++ - CSDN
http://bbs.dbank.com/viewthread.php?tid=12225&page=1&extra=#pid131534 一万多培训费的资料,北京权威的.NET培训机构】 【认真学习后你一定能成为优秀的.net程序员】 学习对象:1.大专及大专以上理工科学历,或有相当学历的理工科教育背景     2.热爱软件编程及软件开发工作 培养目标:IT人才市场紧缺的精通.Net应用开发的软件技术人才。 精通C#.Net、ASP.Net、ADO.Net、AJAX、WEB2.0、XML、JavaScript、SQL Server 2000、Web Service、WSE2.0、.Net Remoting、MultiThread Programming、Socket Programming、Windows Service、Data Structure、 Algorithm、OOA/OOD、UML 、VSS、Rational Rose、Visio等; 掌握Visual Studio .Net 2005开发环境; 熟练开发Web应用程序、Windows应用程序和 基于据库的各种应用程序;熟练开发电子商务软件、电子政务软件和各种信息 管理软件.熟悉面向对象的建模、分析、设计和实施方法.掌握UML建模语言和 Rational Rose、Visio等建模工具。 第一阶段教学内容安排(200课时) 课程名称 课程内容 培训目的 C# 基本语法、面向对象的思想、据结构和算法以及设计模式(120课时) 详细介绍.Net Framework、C# 基本语法、编程规范和编程技巧、面向对象的认识问题和分析问题的思想、以及据结构和常用算法,学习件模式、适配器模式和工厂模式。 深入了解.Net FrameWork、掌握C#语法,学会C#编程,掌握据结构、常用算法和面向对象的思想。 针对循环、组、类的概念、类的构建、类的使用、对象的创建、面向对象的思想、集合、排序、IO操作等知识点先后安排2或3个小型项目:1。制作一个通讯录;2。制作一个小游戏;3。教学管理系统。 通过实际项目深入理解和掌握C# 基本语法、面向对象的思想、类的概念和使用、对象的创建、排序、IO操作等 据库知识和 SQL Server 2000 (40课时) 讲授据库的基本知识和SQL Server 2000, 讲授据库的设计和优化,学习T-SQL 和据库编程,学习存储过程(stored procedure)和触发机制(trigger). 掌握 SQL Server 2000, 学会据库编程, 掌握T-SQL, Stored Procedure, Trigger. C# 高级编程I (40课时) 系统地讲授多线程的基本概念、线程的设计、线程的优先级等以及线程的使用;讲授共享程序集(公有程序集)、私有程序集的组成、原理和使用;学习反射(Reflection)、属性(Attribute)的相关概念和使用。学习流(stream)的概念和IO操作、文件的读写和传输。 掌握多线程编程、文件的操作和程序集的相关概念,学习反射和属性。 第二阶段教学内容安排(400课时) 课程名称 课程内容 培训目的 ASP.Net2.0、ADO.Net2.0和Web 应用程序 (160课时) 系统讲授 ASP.Net2.0、ADO.Net2.0、 基于据库的WEB应用程序、的开发;详细地讲授Web Service及其应用和相关的安全性问题、WSE(Web Services Enhancements)、SOAP、WSDL、UDDI、Windows Service、VSS(Visual Source Safe)。讲授用户控件和第三方控件的开发和使用。学习HTML、XML、JavaScript、水晶报表(Crystal Report)和IIS 基础以及WEB应用程序性能优化;学习Ajax、Web2.0的相关技术。 熟练开发基于据库的Web应用程序、Windows应用程序。熟练开发Windows Service 和 Web Service、Ajax、Web2.0、XML等等. 针对ASP.Net2.0、ADO.Net2.0、Web服务(Web Service)、HTML、XML、JavaScript、水晶报表(Crystal Report)、Ajax、Web2.0等知识点先后安排2或3个小型项目:1。基于Web文件管理系统(File Management System);2。基于Web的咨询系统(基于Web的聊天室);3。论坛系统 通过实际项目深入理解和掌握相关的技术和知识点:Asp.Net、Ajax、 Ado.Net、Web Se
价值一万八的中美 IT 培训笔记一万多培训费的资料,北京权威的.NET培训机构】 【认真学习后你一定能成为优秀的.net程序员】 学习对象:1.大专及大专以上理工科学历,或有相当学历的理工科教育背景     2.热爱软件编程及软件开发工作 培养目标:IT人才市场紧缺的精通.Net应用开发的软件技术人才。 精通C#.Net、ASP.Net、ADO.Net、AJAX、WEB2.0、XML、JavaScript、SQL Server 2000、Web Service、WSE2.0、.Net Remoting、MultiThread Programming、Socket Programming、Windows Service、Data Structure、 Algorithm、OOA/OOD、UML 、VSS、Rational Rose、Visio等; 掌握Visual Studio .Net 2005开发环境; 熟练开发Web应用程序、Windows应用程序和 基于据库的各种应用程序;熟练开发电子商务软件、电子政务软件和各种信息 管理软件.熟悉面向对象的建模、分析、设计和实施方法.掌握UML建模语言和 Rational Rose、Visio等建模工具。 第一阶段教学内容安排(200课时) 课程名称 课程内容 培训目的 C# 基本语法、面向对象的思想、据结构和算法以及设计模式(120课时) 详细介绍.Net Framework、C# 基本语法、编程规范和编程技巧、面向对象的认识问题和分析问题的思想、以及据结构和常用算法,学习件模式、适配器模式和工厂模式。 深入了解.Net FrameWork、掌握C#语法,学会C#编程,掌握据结构、常用算法和面向对象的思想。 针对循环、组、类的概念、类的构建、类的使用、对象的创建、面向对象的思想、集合、排序、IO操作等知识点先后安排2或3个小型项目:1。制作一个通讯录;2。制作一个小游戏;3。教学管理系统。 通过实际项目深入理解和掌握C# 基本语法、面向对象的思想、类的概念和使用、对象的创建、排序、IO操作等 据库知识和 SQL Server 2000 (40课时) 讲授据库的基本知识和SQL Server 2000, 讲授据库的设计和优化,学习T-SQL 和据库编程,学习存储过程(stored procedure)和触发机制(trigger). 掌握 SQL Server 2000, 学会据库编程, 掌握T-SQL, Stored Procedure, Trigger. C# 高级编程I (40课时) 系统地讲授多线程的基本概念、线程的设计、线程的优先级等以及线程的使用;讲授共享程序集(公有程序集)、私有程序集的组成、原理和使用;学习反射(Reflection)、属性(Attribute)的相关概念和使用。学习流(stream)的概念和IO操作、文件的读写和传输。 掌握多线程编程、文件的操作和程序集的相关概念,学习反射和属性。 第二阶段教学内容安排(400课时) 课程名称 课程内容 培训目的 ASP.Net2.0、ADO.Net2.0和Web 应用程序 (160课时) 系统讲授 ASP.Net2.0、ADO.Net2.0、 基于据库的WEB应用程序、的开发;详细地讲授Web Service及其应用和相关的安全性问题、WSE(Web Services Enhancements)、SOAP、WSDL、UDDI、Windows Service、VSS(Visual Source Safe)。讲授用户控件和第三方控件的开发和使用。学习HTML、XML、JavaScript、水晶报表(Crystal Report)和IIS 基础以及WEB应用程序性能优化;学习Ajax、Web2.0的相关技术。 熟练开发基于据库的Web应用程序、Windows应用程序。熟练开发Windows Service 和 Web Service、Ajax、Web2.0、XML等等. 针对ASP.Net2.0、ADO.Net2.0、Web服务(Web Service)、HTML、XML、JavaScript、水晶报表(Crystal Report)、Ajax、Web2.0等知识点先后安排2或3个小型项目:1。基于Web文件管理系统(File Management System);2。基于Web的咨询系统(基于Web的聊天室);3。论坛系统 通过实际项目深入理解和掌握相关的技术和知识点:Asp.Net、Ajax、 Ado.Net、Web Service等。 Windows 应用程序设计模式和Oracle据库编程(40课时) 系统地讲授Windows应用程序的开发,学习观察者模式和Oracle据库编程。 熟练开发基于据库的Windows应用程序,掌握Oracle据库编程。 C# 高级编程II (40课时) 详细讲授DNS开发、套接字(Socket)编程、TCP、UDP 编程、消息队列(MSMQ)及其编程;详细讲授远程处理(Remoting)技术,包括基本远程处理框架,配置文件及其应用, 异步远程处理技术,租约和生存期控制;系统地讲授Windows服务编程、Com+ 服务、WSE2.0的使用。 掌握 Socket 编程、TCP、 UDP编程、远程处理(Remoting)技术、Windows服务编程;Com+ 服务、WSE2.0等。 OOAD&UML (24课时) 讲授面向对象的分析设计方法、UML 语法及Rational Rose/MS Visio 工具的使用 和VSS的使用。 掌握面向对象的建模、分析、设计和实施方法.学习UML 建模语言和 Rational Rose /MS Visio 建模工具. 项目实习 (120课时) 在培训老师的指导下完成一个实际的电子商务软件项目:” Prepaid Phone Card Online Sales System”。内容包括:Application Architecture Analysis、Creating the Data Model、Design Database Schema、Programming Stored procedures、Web Application Design、App Setting、 Log in Design、 Security、 Authentication、Authorization、 Navigation Bar、Shopping Cart、Cross-Brower Support、Performance. 通过实际项目, 培养学生实战能力,包括系统分析、设计(包括功能需求分析、据库设计、功能模块设计和详细设计)、开发、调试、测试和部署的能力。 总复习 考试与就业指导 (16课时) 串讲全部内容,并且针对实际面试情况,有侧重地进行总体复习。 在整个学习过程中有四次考试,占四个周六的时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值