diff --git "a/25.\350\202\226\346\205\247\350\276\276/55/.keep" "b/25.\350\202\226\346\205\247\350\276\276/55/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/25.\350\202\226\346\205\247\350\276\276/55/Buy.aspx" "b/25.\350\202\226\346\205\247\350\276\276/55/Buy.aspx" new file mode 100644 index 0000000000000000000000000000000000000000..fc034fadf1117a91b9a3ce12e378b090b4c1b394 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/55/Buy.aspx" @@ -0,0 +1,95 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Buy.aspx.cs" Inherits="大二.NET大考.Buy" %> + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 药名 + + + +
 收货人姓名 + + +
 电话 + + +
 收货地址 + + +
 
 配送方式 + + +
 备注 + +
 
   
   + +
+
+
+ + diff --git "a/25.\350\202\226\346\205\247\350\276\276/55/Buy.aspx.cs" "b/25.\350\202\226\346\205\247\350\276\276/55/Buy.aspx.cs" new file mode 100644 index 0000000000000000000000000000000000000000..cba0bffb24535d1b2f977e07dbba994789d9c507 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/55/Buy.aspx.cs" @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using System.Threading.Tasks; + +namespace 大二.NET大考 +{ + public partial class Buy : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + UnobtrusiveValidationMode = UnobtrusiveValidationMode.None; + } + + protected void Button1_Click(object sender, EventArgs e) + { + // + string mName = DropDownList1.Text; + string sName = TextBox1.Text; + string tel = TextBox2.Text; + string addr = TextBox3.Text; + //配送方式 + int stype = 0; + if (RadioButton2.Checked) + { + stype = 1; + } + string remark = TextBox4.Text; + + //下单时间???? + DateTime dt = DateTime.Now; + + //下单时默认是未配送:1 + int state = 1; + + //下单时间是空的 + string sql = $"insert OrderInfo(MedicineName,UserId,AddTime,RealName,Mobile,Address,State,SendType,Remark) " + + $"values('{mName}','{Session["Id"]}','{dt}','{sName}','{tel}','{addr}','{state}','{stype}','{remark}')"; + + int result = DAL.DBHelper.ExecuteSql(sql); + if (result > 0) + { + Response.Write(""); + //延时 + Task.Delay(3000); + Response.Redirect("Page.aspx"); + return; + } + Response.Write(""); + + } + } +} \ No newline at end of file diff --git "a/25.\350\202\226\346\205\247\350\276\276/55/DBHelper.cs" "b/25.\350\202\226\346\205\247\350\276\276/55/DBHelper.cs" new file mode 100644 index 0000000000000000000000000000000000000000..3f97add714e6ebd23d36fd77168753d73a405e54 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/55/DBHelper.cs" @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Web; + +namespace 大二.NET大考.DAL +{ + /// + /// 创建DBHelper类使用ADO.NET提供的程序类完成对数据库的操作 + /// + public static class DBHelper + { + //创建数据库连接字符串 + static string connetString = "server=.;database=OrderMedicineDB;uid=sa;pwd=123456;"; + + /// + /// 根据sql语句获取数据库的结果集数据,并返回存储结果集的数据表对象 + /// + /// 要在数据库中执行查询的sql语句 + /// 一个DataTable对象,该对象存储查询结果集 + public static DataTable GetData(string sql) + { + + + //创建DataAdapter对象,作为适配器;用其Fill在数据库执行查询的sql语句,并将查询结果填充到数据集或数据表对象中 + SqlDataAdapter adapter = new SqlDataAdapter(sql, connetString); + + //定义DataTable存储查询结果集,该对象将查询的结果数据存储在内存中 + DataTable dt = new DataTable(); + + //用DataAdapter类的Fill方法将数据库的查询结果集存放到对象dt中,dt对象是存放在内存中的数据表,可以离线操作数据库数据 + adapter.Fill(dt); + + //返回存储查询结果的对象dt + return dt; + } + + /// + /// 使用SqlCommand类,在数据库中执行操作类的sql语句 + /// + /// 要执行的非查询的Sql语句 + /// 返回数据库执行sql语句后的影响行数,大于0操作成功 + public static int ExecuteSql(string sql) + { + + int result = 0; + + //使用数据库连接字符串,创建SqlConnection类对象,用于连接数据库 + SqlConnection connection = new SqlConnection(connetString); + //打开数据库:调用SqlConnection类的Open方法,打开数据库 + connection.Open(); + + //创建数据库操作对象:使用SqlCommand类实例化该对象,通过该对象对数据库执行sql语句; + //初始化参数为要执行的sql语句和连接对象 + SqlCommand command = new SqlCommand(sql, connection); + + //调用SqlCommand类ExecuteNonQuery方法,在数据库中执行该对象中的sql语句; + //ExecuteNonQuery方法返回sql语句执行后的影响行数; + result = command.ExecuteNonQuery();//result保存ExecuteNonQuery方法返回的影响行数 + + //关闭数据库:调用SqlConnection类的Close方法,关闭数据库 + connection.Close(); + + //将执行sql后的影响行数返回给调用该方法的地方,用于判断是否操作成功; + return result; + } + + } +} \ No newline at end of file diff --git "a/25.\350\202\226\346\205\247\350\276\276/55/Index.aspx" "b/25.\350\202\226\346\205\247\350\276\276/55/Index.aspx" new file mode 100644 index 0000000000000000000000000000000000000000..3c7eb4302c0b844960a8d6245fe127cea19dee69 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/55/Index.aspx" @@ -0,0 +1,76 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="大二.NET大考.Index" %> + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
   
 用户名 + + +
   
 密码 + + +
   + +
   + + + +  
+
+
+ + diff --git "a/25.\350\202\226\346\205\247\350\276\276/55/Index.aspx.cs" "b/25.\350\202\226\346\205\247\350\276\276/55/Index.aspx.cs" new file mode 100644 index 0000000000000000000000000000000000000000..4b91802cb002318cc68043df143bae69bcf4700f --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/55/Index.aspx.cs" @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace 大二.NET大考 +{ + public partial class Index : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + UnobtrusiveValidationMode = UnobtrusiveValidationMode.None; + } + + protected void Button1_Click(object sender, EventArgs e) + { + //连接数据库 + Label1.Text = ""; + string name = TextBox1.Text.Trim(); + string pwd = TextBox2.Text.Trim(); + string sql = $"select * from UserInfo where UserName='{name}' and Password='{pwd}'"; + DataTable dt = DAL.DBHelper.GetData(sql); + if (dt.Rows.Count == 1) + { + //登录成功,保存用户ID到Session中 + Session["Id"] = dt.Rows[0]["UserId"]; + + //跳转页面 + Response.Redirect("Page.aspx"); + } + else + { + Label1.Text = "用户名或者密码错误"; + } + } + + protected void Button2_Click(object sender, EventArgs e) + { + Response.Redirect("Register.aspx"); + } + } +} \ No newline at end of file diff --git "a/25.\350\202\226\346\205\247\350\276\276/55/Page.aspx" "b/25.\350\202\226\346\205\247\350\276\276/55/Page.aspx" new file mode 100644 index 0000000000000000000000000000000000000000..71bbac7a7d32c47310dbcd36f4a2a0b048d10681 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/55/Page.aspx" @@ -0,0 +1,58 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Page.aspx.cs" Inherits="大二.NET大考.Page" %> + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + diff --git "a/25.\350\202\226\346\205\247\350\276\276/55/Page.aspx.cs" "b/25.\350\202\226\346\205\247\350\276\276/55/Page.aspx.cs" new file mode 100644 index 0000000000000000000000000000000000000000..888273e2db93fd1e7345b055c3e19b632c08e989 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/55/Page.aspx.cs" @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace 大二.NET大考 +{ + public partial class Page : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + + } + + protected void Button1_Click(object sender, EventArgs e) + { + Response.Redirect("Buy.aspx"); + } + } +} \ No newline at end of file diff --git "a/25.\350\202\226\346\205\247\350\276\276/55/Register.aspx" "b/25.\350\202\226\346\205\247\350\276\276/55/Register.aspx" new file mode 100644 index 0000000000000000000000000000000000000000..8b9782604fa7f8e97b0d9128149a2f432c2c205a --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/55/Register.aspx" @@ -0,0 +1,29 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Register.aspx.cs" Inherits="大二.NET大考.Register" %> + + + + + + + + + +
+ 用户名 + +
+ 密码 + +
+ 确认 + + +
+
+ +   + +
+
+ + diff --git "a/25.\350\202\226\346\205\247\350\276\276/55/Register.aspx.cs" "b/25.\350\202\226\346\205\247\350\276\276/55/Register.aspx.cs" new file mode 100644 index 0000000000000000000000000000000000000000..fd41e5d2a306e8d468fad5cede72b1559155ed9f --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/55/Register.aspx.cs" @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace 大二.NET大考 +{ + public partial class Register : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + UnobtrusiveValidationMode = UnobtrusiveValidationMode.None; + } + + protected void Button1_Click(object sender, EventArgs e) + { + string name = TextBox1.Text.Trim(); + string pwd = TextBox2.Text.Trim(); + //验证有没有该用户,如果有不予注册 + string sql = $"select * from UserInfo where UserName='{name}'"; + DataTable dt = DAL.DBHelper.GetData(sql); + if (dt.Rows.Count > 0) + { + Response.Write(""); + return; + } + //用户名不存在可以注册 + string sql1 = $"insert UserInfo values('{name}','{pwd}')"; + //提示 + Response.Write(""); + //自动跳转到登录页 + Response.Redirect("Index.aspx"); + } + + protected void Button2_Click(object sender, EventArgs e) + { + Response.Redirect("Index.aspx"); + } + } +} \ No newline at end of file diff --git "a/25.\350\202\226\346\205\247\350\276\276/66/.keep" "b/25.\350\202\226\346\205\247\350\276\276/66/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/25.\350\202\226\346\205\247\350\276\276/66/Admin.aspx" "b/25.\350\202\226\346\205\247\350\276\276/66/Admin.aspx" new file mode 100644 index 0000000000000000000000000000000000000000..ad2f8f49fd7e68fcd4ccab276ad68bac2a31bc9b --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/66/Admin.aspx" @@ -0,0 +1,96 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Admin.aspx.cs" Inherits="前端大考.Admin" %> + + + + + + + + + + +
+
+ 书名: + +
+ 作者: +
+ 出版社: +
+ 封面: +
+ 定价: +
+ 库存: +
+
+
+ + 书名 + 作者 + + + +      + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 书名: + +
作者: + +
出版社: + +
定价: + +
库存: + +
+
+
+
+
+
+ + diff --git "a/25.\350\202\226\346\205\247\350\276\276/66/Admin.aspx.cs" "b/25.\350\202\226\346\205\247\350\276\276/66/Admin.aspx.cs" new file mode 100644 index 0000000000000000000000000000000000000000..8802f06402b8f8de2f04fffc28e7565eece706e3 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/66/Admin.aspx.cs" @@ -0,0 +1,97 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace 前端大考 +{ + public partial class Admin : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + UnobtrusiveValidationMode = UnobtrusiveValidationMode.None; + if (!IsPostBack) + { + string sql = "select * from books"; + DataList1.DataSource = DAL.DBHepler.GetValue(sql); + DataList1.DataBind(); + } + } + + protected void Button1_Click(object sender, EventArgs e) + { + //根据书名 + if(DropDownList1.SelectedIndex == 0) + { + string b_name = TextBox1.Text; + string sql = $"select * from books where b_name like '%{b_name}%'"; + DataTable dt = DAL.DBHepler.GetValue(sql); + DataList1.DataSource = dt; + DataList1.DataBind(); + }//根据作者 + else if( DropDownList1.SelectedIndex == 1) + { + string b_auth = TextBox1.Text; + string sql = $"select * from books where b_auth like '%{b_auth}%'"; + DataTable dt = DAL.DBHepler.GetValue(sql); + DataList1.DataSource = dt; + DataList1.DataBind(); + } + + } + + protected void Button2_Click(object sender, EventArgs e) + { + //书名: + string bname = TextBox2.Text; + string auth = TextBox3.Text; + string publ = TextBox4.Text; + string price = TextBox5.Text; + string num = TextBox6.Text; + string intro = ""; + //封面b_guid + //1.判断有没选中 + if (!FileUpload1.HasFile) + { + Response.Write(""); + return; + } + //2.判断后缀名 string.spilt 活着.jpg -- > 0:活着 1:jpg + string[] filename = FileUpload1.FileName.Split('.'); + //后缀 + string suffix = filename[filename.Length-1]; + //文件名guid + string nfilename = Guid.NewGuid().ToString() + "." + suffix; + if(suffix=="jpg" || suffix=="png" || suffix == "jpeg") + { + //3.上传 + //重命名 + + FileUpload1.SaveAs(Server.MapPath(".") + "/images/" + nfilename); + } + else + { + Response.Write(""); + return; + } + + string sql = $"insert into books values('{bname}','{auth}','{publ}','{intro}','{price}','{num}','{nfilename}')"; + + int r = DAL.DBHepler.ExeNonQuery(sql); + if (r > 0) + { + Response.Write(""); + } + string b_auth = TextBox1.Text; + string sql1 = "select * from books"; + DataTable dt = DAL.DBHepler.GetValue(sql1); + DataList1.DataSource = dt; + DataList1.DataBind(); + + + } + } +} \ No newline at end of file diff --git "a/25.\350\202\226\346\205\247\350\276\276/66/DBHepler.cs" "b/25.\350\202\226\346\205\247\350\276\276/66/DBHepler.cs" new file mode 100644 index 0000000000000000000000000000000000000000..38f9404924ed2106a6a6f50b10d0209e0e0854e9 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/66/DBHepler.cs" @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Web; + +namespace 前端大考.DAL +{ + public static class DBHepler + { + static string conStr = "server=.;uid=sa;pwd=123456;database=LibDB"; + + public static DataTable GetValue(string sql) + { + SqlDataAdapter ada = new SqlDataAdapter(sql, conStr); + + DataTable dt = new DataTable(); + ada.Fill(dt); + return dt; + } + + public static int ExeNonQuery(string sql) + { + SqlConnection con = new SqlConnection(conStr); + con.Open(); + SqlCommand command = new SqlCommand(sql,con); + int resu = command.ExecuteNonQuery(); + + con.Close(); + + return resu; + } + } +} \ No newline at end of file diff --git "a/25.\350\202\226\346\205\247\350\276\276/66/\345\211\215\347\253\257\345\244\247\350\200\203.csproj.user" "b/25.\350\202\226\346\205\247\350\276\276/66/\345\211\215\347\253\257\345\244\247\350\200\203.csproj.user" new file mode 100644 index 0000000000000000000000000000000000000000..f8201e23bd5f08c099fdaa6150479430c91a6f79 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/66/\345\211\215\347\253\257\345\244\247\350\200\203.csproj.user" @@ -0,0 +1,38 @@ + + + + true + + + + + + + Debug|Any CPU + + + + + + + + CurrentPage + True + False + False + False + + + + + + + + + True + False + + + + + \ No newline at end of file diff --git "a/25.\350\202\226\346\205\247\350\276\276/66/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.aspx" "b/25.\350\202\226\346\205\247\350\276\276/66/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.aspx" new file mode 100644 index 0000000000000000000000000000000000000000..ae4368af0864630467e194b2037c5de1b5ccdc70 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/66/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.aspx" @@ -0,0 +1,114 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="图书管理系统.aspx.cs" Inherits="前端大考.图书管理系统" %> + + + + + + + + + + +
+
+
+
+
+     + 图书管理系统
+    +         +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  用户名 + + +  
      
     + 密码 + + +  
    + +   
       + + + +   
+
+
+ + diff --git "a/25.\350\202\226\346\205\247\350\276\276/66/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.aspx.cs" "b/25.\350\202\226\346\205\247\350\276\276/66/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.aspx.cs" new file mode 100644 index 0000000000000000000000000000000000000000..92e3e20837c786e4ea84e86a37d5553167e5e729 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/66/\345\233\276\344\271\246\347\256\241\347\220\206\347\263\273\347\273\237.aspx.cs" @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace 前端大考 +{ + public partial class 图书管理系统 : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + UnobtrusiveValidationMode = UnobtrusiveValidationMode.None; + Label1.Visible = false; + } + + protected void Button1_Click(object sender, EventArgs e) + { + string name = TextBox1.Text.Trim(); + string pwd = TextBox2.Text.Trim(); + string sql = $"select * from t_user where name='{name}' and pwd = '{pwd}'"; + DataTable dt = DAL.DBHepler.GetValue(sql); + if (dt.Rows.Count > 0) + { + string st = dt.Rows[0]["utype"].ToString(); + //bit类型 0:False 1: True + //性别 + if(st.Equals("False")) + { + Response.Redirect("用户.aspx"); + } + else + { + Session["admin"] = dt.Rows[0]["name"]; + Response.Redirect("管理员.aspx"); + } + } + else + { + Label1.Text = "用户名或者密码错误"; + Label1.Visible = true; + } + } + } +} \ No newline at end of file diff --git "a/25.\350\202\226\346\205\247\350\276\276/66/\347\224\250\346\210\267.aspx" "b/25.\350\202\226\346\205\247\350\276\276/66/\347\224\250\346\210\267.aspx" new file mode 100644 index 0000000000000000000000000000000000000000..78f7281d16ba48ea6191344521fede845363dce1 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/66/\347\224\250\346\210\267.aspx" @@ -0,0 +1,17 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="用户.aspx.cs" Inherits="前端大考.用户" %> + + + + + + + + + +
+
+

用户页面

+
+
+ + diff --git "a/25.\350\202\226\346\205\247\350\276\276/66/\347\224\250\346\210\267.aspx.cs" "b/25.\350\202\226\346\205\247\350\276\276/66/\347\224\250\346\210\267.aspx.cs" new file mode 100644 index 0000000000000000000000000000000000000000..6edb7f5f98c961bb299e84b8a1725f6d6165d736 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/66/\347\224\250\346\210\267.aspx.cs" @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace 前端大考 +{ + public partial class 用户 : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + + } + } +} \ No newline at end of file diff --git "a/25.\350\202\226\346\205\247\350\276\276/66/\347\256\241\347\220\206\345\221\230.aspx" "b/25.\350\202\226\346\205\247\350\276\276/66/\347\256\241\347\220\206\345\221\230.aspx" new file mode 100644 index 0000000000000000000000000000000000000000..dbbe090408afa438ea0aade93c3eeaa86bfc117c --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/66/\347\256\241\347\220\206\345\221\230.aspx" @@ -0,0 +1,269 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="管理员.aspx.cs" Inherits="前端大考.管理员" %> + + + + + + + + + + +
+
+

图书管理系统

+

+

+

+  

+                                                                                   + + 列表 + 视图 + +                              + + 书名 + 作者 + + + +                   + +                +
+
+ + + + + + + + + + + + + +   + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 书名 + +
作者 + +
出版社 + +
简介 + +
定价 + +
库存 + +
+
+
+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
添加书籍
 书名: + + +
 作者: + +
 出版社: + +
 简介: + +
  
 封面: + +
 定价: + +
   + + +
   + +            + +
   
+
+
+                +
+
+
+
+
+
+
+ + diff --git "a/25.\350\202\226\346\205\247\350\276\276/66/\347\256\241\347\220\206\345\221\230.aspx.cs" "b/25.\350\202\226\346\205\247\350\276\276/66/\347\256\241\347\220\206\345\221\230.aspx.cs" new file mode 100644 index 0000000000000000000000000000000000000000..5f4585e8b2feee18928b27e2a2172776e5ca49b8 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/66/\347\256\241\347\220\206\345\221\230.aspx.cs" @@ -0,0 +1,143 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace 前端大考 +{ + public partial class 管理员 : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + UnobtrusiveValidationMode = UnobtrusiveValidationMode.None; + + MultiView1.ActiveViewIndex = 0; + if (!IsPostBack) + { + if(Session["admin"] != null) + { + Label7.Text = "欢迎你:" + Session["admin"].ToString(); + } + else + { + Response.Redirect("图书管理系统.aspx"); + } + DropDownList1_SelectedIndexChanged(sender, e); + MultiView1.ActiveViewIndex = -1; + } + } + + protected void Button2_Click(object sender, EventArgs e) + { + MultiView1.ActiveViewIndex = -1; + } + + protected void Button1_Click(object sender, EventArgs e) + { + MultiView1.ActiveViewIndex = 0; + } + + protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) + { + //视图还是列表 + if(DropDownList1.SelectedIndex == 0) + { + //列表 + DataList1.Visible = false; + GridView1.Visible = true; + } + else if (DropDownList1.SelectedIndex == 1) + { + //视图 + DataList1.Visible = true; + GridView1.Visible = false; + } + } + + /// + /// 添加书籍 + /// + /// + /// + protected void Button3_Click(object sender, EventArgs e) + { + //书名 + string name = TextBox1.Text; + string author = TextBox2.Text; + string pub = TextBox3.Text; + string intro = TextBox4.Text; + //定价 + decimal price = decimal.Parse(TextBox5.Text); + //库存 + int num = int.Parse(TextBox6.Text); + + + + + //封面 + //1.根据文件后缀名 + //判断有没该文件 + if (!FileUpload1.HasFile) + { + return; + } + + //如果有 + //获取文件名和后缀名 + string[] filename = FileUpload1.FileName.Split('.'); + //获取后缀名,转换为小写 + string suffix = filename[filename.Length-1].ToLower(); + //判断后缀是不是 jpg, png, jpeg + string nfileName = Guid.NewGuid().ToString() + "." + suffix; + if(suffix == "jpg" || suffix == "png" || suffix == "jpeg") + { + //符合 + //上传 + FileUpload1.SaveAs(Server.MapPath(".") + "/images/" + nfileName); + } + else + { + Response.Write(""); + return; + } + + + string sql = $"insert books(b_name,b_auth,b_publ,b_intro,b_price,b_num," + + $"b_guid) values('{name}','{author}','{pub}','{intro}','{price}','{num}','{nfileName}')"; + + int r = DAL.DBHepler.ExeNonQuery(sql); + if (r > 0) + { + Response.Write(""); + MultiView1.ActiveViewIndex = -1; + + //不需要数据源,直接绑定 + GridView1.DataBind(); + DataList1.DataBind(); + } + + + + } + + + protected void Button4_Click(object sender, EventArgs e) + { + if (DropDownList2.SelectedIndex == 0) + { + //书名查找 + string b_name = TextBox7.Text; + string sql = $"select * from books where b_name like '%{b_name}%'"; + } + else if (DropDownList2.SelectedIndex == 1) + { + //作者查找 + string b_auth = TextBox7.Text; + string sql = $"select * from books where b_auth like '%{b_auth}%'"; + } + } + } +} \ No newline at end of file diff --git "a/25.\350\202\226\346\205\247\350\276\276/Test.aspx" "b/25.\350\202\226\346\205\247\350\276\276/Test.aspx" new file mode 100644 index 0000000000000000000000000000000000000000..b6c949800cc8df998ececad6355aedf404d41ba0 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/Test.aspx" @@ -0,0 +1,94 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="前端考试卷.Test1" %> + + + + + + + + + +
+
+
+ + + 用户名 + +
+ 邮箱 + +
+ 性别 + + + +
+ 省份 + + 湖北省 + 上海市 + 重庆市 + 湖南省 + +
+ 爱好 + + + + + +
+ + +
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + diff --git "a/25.\350\202\226\346\205\247\350\276\276/Test.aspx.cs" "b/25.\350\202\226\346\205\247\350\276\276/Test.aspx.cs" new file mode 100644 index 0000000000000000000000000000000000000000..9acd44a97d383904bab8479a2f64b3eba6308d62 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/Test.aspx.cs" @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace 前端考试卷 +{ + public partial class Test1 : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + UnobtrusiveValidationMode = UnobtrusiveValidationMode.None; + } + + protected void Button1_Click(object sender, EventArgs e) + { + MultiView1.ActiveViewIndex = 0; + } + + protected void Button3_Click(object sender, EventArgs e) + { + MultiView1.ActiveViewIndex = -1; + } + + protected void Button2_Click(object sender, EventArgs e) + { + //调用DBHelper进行插入操作 + //姓名 + string name = TextBox1.Text; + string email = TextBox2.Text; + //性别 + string sex = "男"; + if (RadioButton2.Checked) + { + sex = "女"; + } + else if(RadioButton3.Checked) + { + sex = "未知"; + } + + //省份 + string prov = DropDownList1.SelectedValue; + + //checkbox获取 + string hobby = ""; + //方法1 + //if (CheckBox1.Checked) + //{ + // hobby += CheckBox1.Text; + //} + + //方法2 + //foreach (var item in form1.Controls) + //{ + // //筛选出checkbox + // if(item is CheckBox) + // { + // //是否被选中 + // var t = (CheckBox)item; + // if (t.Checked) + // { + // hobby += t.Text+"|"; + // } + // } + //} + + //方法3 + List lis = new List { CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5 }; + foreach (var item in lis) + { + if (item.Checked) + { + hobby += item.Text+"|"; + } + } + + + + + string sql = $"insert t_user values('{name}','{email}','{sex}','{prov}','{hobby}')"; + int re = 图书系统.Util.Updata(sql); + if (re > 0) + { + Response.Write(""); + // GridView1.DateSource = dt + // DataBind() + GridView1.DataBind(); + } + else + { + Response.Write(""); + } + } + } +} \ No newline at end of file diff --git "a/25.\350\202\226\346\205\247\350\276\276/web\347\254\224\350\256\260/.keep" "b/25.\350\202\226\346\205\247\350\276\276/web\347\254\224\350\256\260/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/25.\350\202\226\346\205\247\350\276\276/web\347\254\224\350\256\260/C#-WebForm-Note.md" "b/25.\350\202\226\346\205\247\350\276\276/web\347\254\224\350\256\260/C#-WebForm-Note.md" new file mode 100644 index 0000000000000000000000000000000000000000..afeb5494edcf26c5c9abe5b40a833723258cbdf8 --- /dev/null +++ "b/25.\350\202\226\346\205\247\350\276\276/web\347\254\224\350\256\260/C#-WebForm-Note.md" @@ -0,0 +1,565 @@ +# C#-WebForm-WebForm开发基础 + + + + + +### 1、C/S  客户端应用程序 + +需要从服务器上下载相应的数据,在本地电脑上的客户端里进行加工 + +数据的加工是在用户的电脑上执行的,会对用户的电脑配置有所要求 + + + +### 2、B/S  网页端应用程序 + +ASP.NET  统称 + +ASP.NET WebForm  ASP.NET [MVC](https://so.csdn.net/so/search?q=MVC&spm=1001.2101.3001.7020)  平级 + +用户发送一个请求到[IIS](https://so.csdn.net/so/search?q=IIS&spm=1001.2101.3001.7020)服务器,由服务器将所有的代码执行,服务器会将执行完毕后的html结果给你发送回来,浏览器将发送回来的HTML代码解析给你 + +IIS是什么?就是服务员 + +.aspx 中含有C#执行代码,而.html中无需要执行的C#代码 + +过程:用户浏览器打开网页,向IIS发送请求,如果IIS有默认代码,则直接发送给用户浏览器,如果有要处理的代码,则IIS发送给Framework框架进行处理,Framework返回给IIS代码,IIS在返回给用户浏览器 + + + +IIS:信息服务管理器 + +位置:控制面板 → 管理工具(系统默认是没有的,需要进行安装) + +# webform页面传值 + +### 1、get方式 + +发送页 + +```vbnet +
+ +
+ +protected void button2_Click(object sender, EventArgs e) +{ + Response.Redirect("WebForm2.aspx?name=5"); +} + +``` + +接受页 + +```vbnet +this.Label1.Text = Request["name"]; +//this.Label2.Text = Request.Params["name"]; +//this.Label3.Text = Request.QueryString[0]; +123 +``` + +### 2、post方式 + +a\不带 runat="server"形式 + +发送页 + +```vbnet +
+ + +
+ +``` + +接受页 + +```vbnet +this.Label1.Text =Request.Form["txtname"]; +1 +``` + +b\带 runat=“server” + +发送页 + +```vbnet +
+ +
+
+ +
+ + +``` + +接受页 + +```vbnet +this.Label1.Text =Request.Form["txtname"]; +1 +``` + +### 3、Session 和 Application + +```vbnet +Session["name2"] = "sessontest"; +Application["name3"] = "applicationtest"; + +this.Label2.Text =(string)Session["name2"]; +this.Label3.Text =(string)Application["name3"]; +12345 +``` + +### 4、静态变量 + +发送页 + +```vbnet +public static string statest="static string"; +protected void button2_Click(object sender, EventArgs e) +{ + Server.Transfer("WebForm2.aspx"); +} + +``` + +接受页 + +```vbnet +this.Label1.Text = WebForm1.statest; + +``` + +### 5、Context.Handler 获取控件 + +发送页 + +```vbnet + + + +protected void button2_Click(object sender, EventArgs e) +{ + Server.Transfer("WebForm2.aspx"); +} + +``` + +接受页 + +```vbnet +//获取post传过来的对象 +if (Context.Handler is WebForm1) +{ + WebForm1 poster = (WebForm1)Context.Handler; + this.Label1.Text = ((TextBox)poster.FindControl("TextBox1")).Text; +} + +``` + +### 6、Context.Handler 获取公共变量 + +发送页 + +```vbnet +public string testpost = "testpost"; +protected void button2_Click(object sender, EventArgs e) +{ + Server.Transfer("WebForm2.aspx"); +} + +``` + +接受页 + +```vbnet +//获取post传过来的对象 +if (Context.Handler is WebForm1) +{ + WebForm1 poster = (WebForm1)Context.Handler; + this.Label2.Text = poster.testpost; + } + +``` + +### 7、Context.Items 变量 + +发送页 + +```vbnet +protected void button2_Click(object sender, EventArgs e) +{ + Context.Items["name"] = "contextItems"; + Server.Transfer("WebForm2.aspx"); +} + +``` + +接受页 + +```vbnet +//获取post传过来的对象 +if (Context.Handler is WebForm1) +{ + this.Label3.Text = Context.Items["name"].ToString(); +} + +``` + +# ASP.NET内置对象 + +### Request对象 + +用来获取客户端在请求一个页面或传送一个Form是提供的所有信息。它包括用户的HTTP变量、能够识别的浏览器、存储客户端的Cookie信息和请求地址等。 + +Request对象是System.Web.httpRequest类的对象 + +##### 属性 + +QueryString :获取HTTP查询字符串变量集合,主要用于收集HTTP协议中Get请求发送的数据 + +Form :获取窗体或页面变量的集合,用于收集Post方法发送的请求数据 + +ServerVarible:环境变量集合包含了服务器和客户端的系统内信息 + +Params:它是QueryString、Form和ServerVarible这三种方式的集合,不区分是由哪种方式传递的参数 + +ApplicationPath:获取服务器上ASP.NET虚拟应用程序的根目录路径 + +ContertLength:指定客户端发送的内容长度 + +Cookies:获取客户端发送的Cookie集合 + +FilePath:获取当前请求的虚拟路径 + +Files:获取采用多部分MIME格式的由客户端上载的文件集合 + +Item:从Cookies, From, QueryString或ServerVariables集合中获取指定的对象 + +Path:获取当前请求的虚拟路径 + +Url:获取有关当前请求的URL信息 + +UserHostName:获取远程客户端的DNS名称 + +UserHostAddress:获取远程客户端的IP主机地址 + +IsLocal:获取一个值,该值指示该请求是否来自本地计算机 + +Browser:获取或设置有关正在请求的客户端浏览器功能信息 + +##### 方法 + +BinaryRead():执行对当前输入流进行制定字节数的二进制读取 + +SaveAs():将HTTP请求保存到磁盘 + +MapPath():将指定的路径映射到物理路径 + +### Response对象 + +Response对象是HttpRespone类的一个实例。该类主要是封装来自ASP.NET操作的HTTP相应信息。Response对象将数据作为请求的结果从服务器发送到客户浏览器中,并提供有关响应的消息。它可用来在页面中输出数据,在页面中跳转,还可以传递各个页面的参数。 + +##### 方法 + +Redirect:将网页重新转到另一地址 + +Write:写出指定字符串。 + +AppendHeader: + +##### 语法格式 + +Response.AppendHeader(Name,Value) +参数Name为HTTP头,参数Value为HTTP头的值。 + +HTTP头是HTTP协议规定的请求和响应消息都支持的头域内容。HTTP头是页面通过HTTP协议访问页面时,最先响应的请求和响应消息,例如HTTP头中的Location,Location头用于将页面重定向到另一个页面,与Redirect方法相似。 + +WriteFile 将文件输出到客户端 + +Flush 将缓冲区的数据输出到客户端浏览器 + +End 停止并结束ASP网页的处理 + +Close 关闭客户端的联机 + +ClearHeaders 清除缓冲区中的页面标题 + +Clear 清除缓冲区的数据 + +BinaryWrite 将二进制字符或字符串输出到客户端浏览器 + +AppendToLog 将自定义的数据加入到IIS日志文件中(Log File),以便追踪与分析记录。 + +##### 属性 + +ContentType:输出流的内容类型比如html(text/html) 、普通文本(text/pain)还是JPEG图片(image/JPEG)。 + +ContentEncoding:输出流的编码 + +Cookies : 返回浏览器的cookies的集合 + +Buffer : 设置缓冲信息, true | false .默认是true + +Expires : 获取或设置在浏览器上缓存的页过期之前的分钟数, 设置为0,则立刻过期 + +### Page对象 + +每个aspx文件对应的一个page对象,.aspx页面与后台.cs代码类(局部类)合并生成页面类,Page对象是页面类的实例。所有的.aspx文件(Web窗体页)都继承自System.Web.UI.Page类 + +<%@ Page + + Language=“C#” —指明后台使用C#语言 + + AutoEventWireup=“true” —设置是否自动调用网页Load事件,默认是true + + CodeBehind=“WebDemo1.aspx.cs”—其.aspx文件上绑定的后台代码文件 + + Inherits=“ASP.NETDemo.Demo1.WebDemo1” —后台代码类 + +%> + +##### 属性 + +IsPostBack:该属性可以检查.aspx页是否为传递回服务器的页面,常用于判断页面是否为首次加载。 + +如果为true则为回发响应,如果为false则为首次加载 + +IsValid:该属性用于判断页面中的所有输入的内容是否应经通过验证,它是一个布尔值的属性。当需要使用服务器端验证时,可以使用该属性。 + +IsCrossPagePostBack:该属性判断页面是否使用跨页提交,它是一个布尔值的属性。 + +Response属性和Request属性上面讲过了 + +##### 事件 + +Page类常用的事件及执行的先后顺序: + +Page.PreInit 事件:在页初始化开始时发生 +Page.Init 事件:当服务器控件初始化时发生;初始化是控件生存期的第一步。 (继承自 Control。) +Page.InitComplite事件:在页初始化完成时发生 +Page.PreLoad事件:在页 Load 事件之前发生 +Page.Load事件:当服务器控件加载到 Page 对象中时发生。 (继承自 Control ) +Page.LoadComplete 事件:在页生命周期的加载阶段结束时发生 +Page.PreRender事件 :在加载 Control 对象之后、呈现之前发生。 (继承自 Control。) +Page.PreRenderComplete 事件:在呈现页内容之前发生 + +### ViewState对象 + +视图状态,在 ASP .NET 中,当一个表单被提交时,表单会连同表单值一起出现在浏览器窗口中。如何做到的呢?这是因为 ASP .NET 维持了您的 ViewState。 ViewState 会在页面被提交到服务器时表明它的状态。这个状态是通过在带有 < form runat=“server”> 控件的每个页面上放置一个隐藏域定义的。 + +这个对象是ASP.NET中特有的对象,在其他语言的后端技术中没有这个对象 + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack)//如果是第一次访问 + { + //先将Count的值设为0,并且保存在ViewState中 + ViewState["count"] = 0; + } + } + protected void btnAdd_Click(object sender, EventArgs e) + { + //每次点击按钮先取出ViewState中的值并且累加之后再次赋给ViewState + ViewState["count"] = Convert.ToInt32(ViewState["count"]) + 1; + Literal1.Text = ViewState["count"].ToString(); + } + } + 使用ViewState实现页面信息的保存 +保存数据:ViewState对象存储数据[键值对]Key=Value + +取出数据:根据Key值取出Value值 + +##### 总结: + +ViewState中保存的数据全部被转换成object类型,取出时务必强制转换成特定类型 +ViewState只能在同一个页面的连续多次请求之间保存信息,页面跳转后信息就会丢失 +ViewState的本质 +ViewState的本质是一个隐藏域,和原始的.aspx文件中的多出来的标签一样,都是一个隐藏域,第一次创建ViewState对象其实是创建了一个隐藏域 + + + +### Session对象 + +Session对象是Asp.Net应用程序中非常重要的一个内置对象,Session是指用户从打开浏览器访问服务器到关闭浏览器之间的会话状态,在一个会话期间,服务器会自动分配一个标识SessionId。Session可以存储用户访问服务器的一些传递资料信息。Session和Application一样都是全局性作用的,区别在于Application对象针对于所有的用户,而Session对象针对于某一个用户。 + +Session对象可以存储任何类型的值,包括一些用户自定义的数据类型,如用户自定义类、用户自定义结构体等等。Session对象默认20分钟过期,这期间各个页面都可以访问该对象。 + +Session对象和Cookie对象相比的差别在于,Cookie存储在客户端的浏览器中,而Session对象存储在服务器端,因此一些机密重要的东西一定不能存放在Cookie中以防他人盗取,如用户的密码等机密信息。 + +Session常见的用处在有:存储登录用户的信息的,可以通过判断Session中是否存在相应的用户信息来判断用户是否登录。 + +##### Session常用属性: + +(1)SessionID:获取Session编号,一般在会话开始的时候由服务器自动分配一个标识SessionId,整个会话过程中的SessionId保持不变。 + +(2)TimeOut:设置Session对象的超期时间,默认为20分钟。 + +(3)Keys:根据索引号获取Session变量值 + +(4)Count:获取Session变量的总数量。 + +Session常用方法有: +Session.Add(“name”,“value”):添加名称为Name,值为value的Session对象。 + +Session.Clear():清除Session变量值。 + +### Cookie对象 + +Cookie对象是服务器为用户访问存储的特定信息,这些信息一般存储在浏览器中,服务器可以从提交的数据中获取到相应的Cookie信息,Cookie的最大用途在于服务器对用户身份的确认,即票据认证,用户会话分配的SessionId会存储在Cookie中,通过这个Cookie中的SessionId可以提供用户全局性访问该网站。 + +一般Cookie对象可以为用户存储一些简单的非机密性的信息,如用户的登录时间等信息。 + +##### Cookie对象常见属性: + +(1)Response.Cookie.Keys:获取Cookie变量名或者根据其索引获取变量值 + +(2)Response.Cookies.Count:获取Cookie变量的数量 + +(3)Response.Cookies.AllKeys:将Cookies对象中所有的变量名存储到数组中。 + +Cookie对象的常用方法有: +(1)Response.Cookies.Set:用于更新Cookie的变量值 + +(2)Response.Cookies.Remove:用于删除Cookie变量 + +(3)Response.Cookies.Get:用Cookie变量名称或者索引值获取变量值。 + +(4)Response.Cookies.Clear:清除Cookie内所有的变量 + +(5)Response.Cookies.Add:用于Cookie对象中添加Cookie变量。 + +创建一个Cookie对象并输出到浏览器可使用以下语句实现: + +HttpCookie cookie_t = new HttpCookie(“Test”);//创建一个名称为Test的Cookie对象 + +cookie_t.Value = “测试数据”; //设置cookie的值 + +Response.Cookies.Add(cookie_t); + +如果要更新上述Cookie的值可采用下列方法: + +cookie_t.Value = “更新cookie数据”; +Response.Cookies.Set(cookie_t);//更新Cookie的值 + +移除cookie_t可采用 Response.Cookies.Remove(“Test”);即可移除Cookie数据。 + + if (Response.Cookies["User"].Value!=null&& Response.Cookies["Pwd"].Value != null) + { + TextBox1.Text = Response.Cookies["User"].Value; + TextBox2.Text = Response.Cookies["Pwd"].Value; + } + + //创建cookie + HttpCookie cookie = new HttpCookie("User", TextBox1.Text); + Response.Cookies.Add(cookie); + Response.Write("登录是自己(cookie)"); + + +### Session对象 + +Session对象是Asp.Net应用程序中非常重要的一个内置对象,Session是指用户从打开浏览器访问服务器到关闭浏览器之间的会话状态,在一个会话期间,服务器会自动分配一个标识SessionId。Session可以存储用户访问服务器的一些传递资料信息。Session和Application一样都是全局性作用的,区别在于Application对象针对于所有的用户,而Session对象针对于某一个用户。 + +Session对象可以存储任何类型的值,包括一些用户自定义的数据类型,如用户自定义类、用户自定义结构体等等。Session对象默认20分钟过期,这期间各个页面都可以访问该对象。 + +Session对象和Cookie对象相比的差别在于,Cookie存储在客户端的浏览器中,而Session对象存储在服务器端,因此一些机密重要的东西一定不能存放在Cookie中以防他人盗取,如用户的密码等机密信息。 + +Session常见的用处在有:存储登录用户的信息的,可以通过判断Session中是否存在相应的用户信息来判断用户是否登录。 + +##### Session常用属性: + +(1)SessionID:获取Session编号,一般在会话开始的时候由服务器自动分配一个标识SessionId,整个会话过程中的SessionId保持不变。 + +(2)TimeOut:设置Session对象的超期时间,默认为20分钟。 + +(3)Keys:根据索引号获取Session变量值 + +(4)Count:获取Session变量的总数量。 + +##### Session常用方法: + +Session.Add(“name”,“value”):添加名称为Name,值为value的Session对象。 + +Session.Clear():清除Session变量值。 + +### Cookie对象 + +Cookie对象是服务器为用户访问存储的特定信息,这些信息一般存储在浏览器中,服务器可以从提交的数据中获取到相应的Cookie信息,Cookie的最大用途在于服务器对用户身份的确认,即票据认证,用户会话分配的SessionId会存储在Cookie中,通过这个Cookie中的SessionId可以提供用户全局性访问该网站。 + +一般Cookie对象可以为用户存储一些简单的非机密性的信息,如用户的登录时间等信息。 + +##### Cookie对象常见属性有: + +(1)Response.Cookie.Keys:获取Cookie变量名或者根据其索引获取变量值 + +(2)Response.Cookies.Count:获取Cookie变量的数量 + +(3)Response.Cookies.AllKeys:将Cookies对象中所有的变量名存储到数组中。 + +##### Cookie对象的常用方法有: + +(1)Response.Cookies.Set:用于更新Cookie的变量值 + +(2)Response.Cookies.Remove:用于删除Cookie变量 + +(3)Response.Cookies.Get:用Cookie变量名称或者索引值获取变量值。 + +(4)Response.Cookies.Clear:清除Cookie内所有的变量 + +(5)Response.Cookies.Add:用于Cookie对象中添加Cookie变量。 + +创建一个Cookie对象并输出到浏览器可使用以下语句实现: + +HttpCookie cookie_t = new HttpCookie(“Test”);//创建一个名称为Test的Cookie对象 + +cookie_t.Value = “测试数据”; //设置cookie的值 + +Response.Cookies.Add(cookie_t); + +如果要更新上述Cookie的值可采用下列方法: + +cookie_t.Value = “更新cookie数据”; +Response.Cookies.Set(cookie_t);//更新Cookie的值 + +移除cookie_t可采用 Response.Cookies.Remove(“Test”);即可移除Cookie数据。 + + if (Response.Cookies["User"].Value!=null&& Response.Cookies["Pwd"].Value != null) + { + TextBox1.Text = Response.Cookies["User"].Value; + TextBox2.Text = Response.Cookies["Pwd"].Value; + } + + //创建cookie + HttpCookie cookie = new HttpCookie("User", TextBox1.Text); + Response.Cookies.Add(cookie); + Response.Write("登录是自己(cookie)"); + + +### ASP.NET常用对象比较 + +对象名称 存储位置 有效时间 信息共享范围 +Request/Response 请求和响应的过程中 请求结束之前 一次请求的一个页面 +ViewState 被请求的页面中 页面关闭之前 多次请求的一个页面 +Session Web服务器端 规定的时间内 同一网站的不同页面 +Cookie 客户端硬盘中 规定的时间内 同一网站的不同页面 +Application Web服务器端 IIS重启之前 整个应用程序中 + +# 服务器的特性 + +### 无状态特性 + +Web服务器不会保留每次浏览器所发出的HTTP请求的具体信息和当时的状态 +即使请求来自于同一个浏览器,他也将其视为“陌生人”,绝不会“记得浏览器”在刚才做了些什么 +在ASP.NET后台中,不再有“成员变量”,理解为每次的请求对于服务器而言都是一次新生,返回的是一个新对象 +ASP.NET中专门提供了一个网页多次请求之间保存信息的对象"ViewState"(视图状态)对象来模拟“成员变量”的角色 \ No newline at end of file diff --git "a/25.\350\202\226\346\205\247\350\276\276/\344\275\234\344\270\232/.keep" "b/25.\350\202\226\346\205\247\350\276\276/\344\275\234\344\270\232/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391