此练习为一个完整的项目代码,含有用户注册、用户登录、宠物商品列表、购物车、结算、个人信息更新等功能。

在项目根目录,先创建App_Themes文件夹,其内建立一个文件夹PetShop1,内含一个css主题样式文件。

stylesheet1.css

/*********网页公共部分*********/
*, html, body {margin:0;padding:0;
}body {background-color:#e3e5dc;margin:0;background-image:url("../../Comm_Images/bg-body.gif");background-repeat:repeat-x;
}a:visited {color:#333333;text-decoration:none;
}a:hover {color:#1639a9;text-decoration:underline;
}a:link {color:#333333;text-decoration:none;
}.label {font-family:Arial,Helvetica,sans-serif;font-size:13px;color:#333333;margin-left:20px;margin-bottom:10px;text-align:left;
}/***********首页部分*************/
.homeBody {background-color:#ffffff;margin:0;background-image:url("../../Comm_Images/home-bg-body.gif");background-repeat:repeat-x;
}.divHome {width:800px;margin:0 auto;height:100px;
}#logoH {float:left;width:380px;height:40px;border:1px solid #cccccc;margin-top:20px;text-align:center;font-size:30px;line-height:40px;color:#333333;font-style:oblique;border-radius:15px;background-color:#e3e5dc;
}.homeBgSearch {width:306px;height:35px;float:right;margin-top:33px;
}.homeL {width:100%;height:60px;background-color:#e3e5dc;
}.homeSearchBox {font-size:16px;line-height:18px;color:#404040;background-color:#ffffff;border-width:1px;border-style:solid;border-top-color:#e9eed8;border-right-color:#c6c3b3;border-bottom-color:#abaf94;border-left-color:#c6c3b3;height:20px;margin-top:7px;width:160px;float:left;
}.paddingSearchicon {width:20px;height:20px;margin-top:6px;margin-left:10px;float:left;border:1px solid #eeeeee;
}.homeLink {font-family:Arial,Helvetica,sans-serif;font-size:15px;font-weight:bold;color:lightblue;width:80px;float:left;display:inline-block;height:20px;line-height:15px;margin-top:10px;margin-left:15px;
}.divContent {width:800px;margin:0 auto;height:400px;}.divContent .leftH {float:left;}#seahorse {width:112px;float:left;
}#mainContent {position:relative;width:450px;top:-26px;float:left;
}.welcome {font-family:Arial,Helvetica,sans-serif;font-size:15px;font-weight:bold;color:#ffffff;padding-left:20px;background-color:#abaf94;line-height:26px;
}.bgControl {background-color:#e3e5dc;
}.intro {font-family:Arial,Helvetica,sans-serif;font-size:15px;font-weight:bold;color:#555555;padding-top:20px;line-height:18px;padding-left:20px;display:inline-block;width:300px;
}.navigationLabel {color:#9a839;font-size:15px;font-weight:bold;line-height:22px;font-family:Arial,Helvetica,sans-serif;padding-left:20px;
}.ctMenu {padding-left:40px;height:270px;
}.navigationLinks {font-family: 宋体,新宋体;font-size:16px;color:#333333;line-height:22px;font-weight:bold;vertical-align:middle;width:300px;height:22px;border-bottom:1px dotted #555555;margin-top:10px;margin-bottom: -10px;
}.footerHome {font-family:Arial,Helvetica,sans-serif;font-size:14px;text-transform:uppercase;color:#ffffff;background-color:#122e87;padding-left:16px;line-height:22px;
}.fishPosition {}.fishPosition img {position:relative;left: 497px;top: -331px;width:241px;height:250px;float:left;
}/************母版页部分**************/.divMaster {width:800px;heigt: 100px;margin:0 auto;
}.divLogoM {float:left;width:380px;height:70px;border:1px solid #cccccc;margin-top:15px;margin-bottom:5px;text-align:center;font-size:30px;font-weight:bold;line-height:70px;color:#333333;font-style:oblique;border-radius:15px;background-color:#e3e5dc;
}.signIn {background-color:#e9eed8;width:400px;height:40px;margin-top:15px;float:right;
}.textboxSearch {font-size:16px;line-height:24px;color:#000000;background-color:#ffffff;border-width:1px;border-style:solid;border-top-color:#e9eed8;border-right-color:#c6c3b3;border-bottom-color:#abaf94;border-left-color:#c6c3b3;height:24px;margin-left:15px;float:left;margin-top:8px;margin-bottom:8px;width:180px;
}#btnSearch {float:left;width:20px;height:20px;margin-top:10px;margin-bottom:10px;margin-left:10px;
}.link {font-family: 宋体;font-size:15px;color:#333333;margin-top:8px;margin-bottom:8px;margin-left:15px;line-height:24px;width:60px;float:left;
}#btnLgnStatus {float:left;line-height:24px;margin-top:8px;margin-bottom:8px;margin-left:15px;width:80px;font-family: 宋体,Arial;font-weight:bold;
}.disableLink {font-family:Arial,Helvetica,sans-serif;font-size:0.65em;text-transform:uppercase;color:#999999;text-indent:10px;
}.checkOut {background-color:#abaf94;width:400px;height:30px;float:right;
}.checkOut img {width:20px;height:20px;margin-left:15px;margin-top:5px;margin-bottom:5px;margin-right:2px;border:none;float:left;
}.checkOutLink {font-family: 宋体,Arial;font-size:15px;color:#333333;margin-right:20px;line-height:20px;margin-top:6px;margin-bottom:4px;float:left;
}.divTitle {width:800px;height:52px;margin:0 auto;clear:both;border-bottom:2px solid #eeeeee;
}.breadrumb {font-family: 宋体,Arial;font-size:14px;color:#333333;font-weight:bold;height:25px;line-height:25px;text-align:right;margin-right:30px;}.pageHeader {font-family: 宋体,Arial;font-size:14px;font-weight:bold;color:#ffffff;background-color:#0a1b50;text-indent:16px;height:20px;line-height:20px;width:620px;margin-left:180px;
}.divCenter {width:800px;margin:0 auto;min-height:400px;
}.leftMenu {float:left;width:180px;height:auto;
}.menuLinks {font-family: 宋体,Arial;font-size:15px;color:#333333;font-weight:bold;width:150px;height:35px;padding-left:20px;border-bottom:1px dotted #999999;
}.mainContent {float:right;background-color:white;width:620px;
}.footer {font-family:Arial,Helvetica,sans-serif;font-size:13px;text-transform:uppercase;color:#ffffff;background-color:#abaf94;padding-left:18px;line-height:18px;
}.dottedLine {background-image:url("../../Comm_Images/dotten-line.gif");background-repeat:repeat-x;background-position:bottom;height:8px;
}.mainNavigation {font-family:Arial,Helvetica,sans-serif;font-size:0.7em;text-transform:uppercase;padding-left:2px;color:#333333;font-weight:bold;line-height:20px;padding-right:5px;display:block;height:100%;
}/****SignIn.aspx************/
.signinPosition {width:400px;height:200px;margin:0 auto;}.signinHeader {font-family:Arial,Helvetica,sans-serif;font-size:16px;font-weight:bold;text-align:left;white-space:nowrap;color:#333333;padding-top:5px;padding-bottom:5px;line-height:30px;
}.signinLabel {font-family:Arial,Helvetica,sans-serif;font-weight:normal;color:#333333;font-size:15px;margin-top:5px;
}.signinTextbox {font-size:15px;color:#000000;text-indent:3px;background-color:#eae9e4;border-width:1px;border-style:solid;border-top-color:#c6c3b3;border-right-color:#7c7d6a;border-bottom-color:#000000;border-left-color:#7c7d6a;height:20px;line-height:20px;margin-right:2px;margin-left:30px;margin-top:5px;
}.ErrorLabel {font-family:Arial,Helvetica,sans-serif;font-weight:bold;color:#cc3300;font-size:15px;margin-bottom:30px;margin-left:100px;
}.signinButton {font-family:Tahoma,Arial,Helvetica,sans-serif;background-color:#fb9d00;font-size:15px;color:#ffffff;font-weight:bold;cursor:pointer;border: 1px solid;border-bottom-color:#f07c00;border-top-color:#ffcc00;border-right-color:#f07c00;border-left-color:#ffcc00;padding-left:5px;padding-right:5px;margin-left:150px;margin-top:10px;
}.linkNewUser {font-family:Arial,Helvetica,sans-serif;font-size:14px;color:#33333;text-indent:3px;
}.signInContent {font-family:Arial,Helvetica,sans-serif;font-size:0.8em;background-color:#ffffff;white-space:nowrap;color:#333333;padding-top:10px;padding-bottom:10px;
}.welcomeName {font-size:0.7em;font-weight:bold;white-space:nowrap;text-indent:37px;color:#555555;font-family:Arial,Helvetica,sans-serif;
}/***********NewUser.aspx**************/
.signinNewUser {font-family:Arial,Helvetica,sans-serif;font-size:0.8em;text-transform:uppercase;color:#333333;
}/************UserProfile.aspx**************/
.profilePostition {position:relative;width:360px;top:0;left:0;margin:0 auto;vertical-align:top;
}.info {font-family:Arial,Helvetica,sans-serif;font-size:0.8em;color:#333333;margin-bottom:15px;text-align:left;
}/***************Products.aspx*******************/
.divLeft {float:left;width:145px;height:145px;border:2px solid #555555;margin-left:10px;text-align:center;margin-top:10px;margin-bottom:10px;
}.divLeft img {width:138px;height:138px;border:2px solid #cccccc;padding:2px;
}.divRight {float:left;width:120px;height:145px;margin-left:8px;margin-top:10px;margin-bottom:10px;
}.productName {font-family:Arial,Helvetica,sans-serif;font-size:16px;font-weight:bold;color:#333333;margin-top:3px;padding-left:2px;padding-bottom:8px;
}.productDescription {font-family:Arial,Helvetica,sans-serif;font-size:12px;font-weight:normal;color:#333333;padding-left:2px;padding-bottom:8px;
}.itemText {font-family:Arial,Helvetical,sans-serif;font-size:13px;font-weight:normal;line-height:30px;width:100%;height:30px;
}.itemText #imgCart {width:20px;height:20px;border-width:0;float:left;margin-left:20px;margin-top:6px;
}.linkCart {font-family:Arial,Helvetical,sans-serif;font-size:14px;font-weight:bold;cursor:pointer;line-height:28px;margin-top:3px;margin-left:4px;float:left;
}.itemText #imgWishList {width:20px;height:20px;border-width:0;float:left;margin-left:20px;margin-top:6px;
}.linkWishlist {font-family:Arial,Helvetical,sans-serif;font-size:14px;font-weight:bold;cursor:pointer;line-height:28px;margin-top:3px;margin-left:4px;float:left;
}/*********ShoppingCart.aspx*************************/
.cartPosition {position:relative;width:400px;top:0;left:0;margin:0 auto;vertical-align:top;padding-top:50px;padding-bottom:33px;
}.linkCheckOut {font-family:Arial,Helvetica,sans-serif;font-size:0.65em;text-transform:uppercase;color:#333333;text-indent:7px;
}.cartHeader {font-family:Arial,Helvetica,sans-serif;font-size:0.9em;text-align:center;white-space:nowrap;color:#333333;width:387px;padding-bottom:16px;
}.labelLists {font-family:Tahoma,Arial,Helvetica,sans-serif;font-size:0.7em;font-weight:bold;color:#747c6d;vertical-align:bottom;background-image:url("../../Comm_Images/bg-labelLists.gif");text-align:left;line-height:21px;padding-left:5px;text-indent:2px;padding-right:5px;padding-top:8px;padding-bottom:1px;border-bottom-color:#ffffff;border-bottom-style:solid;
}.listItem {font-family:Tahoma,Arial,Helvetica,sans-serif;font-size:0.7em;color:#3333333;text-decoration:none;line-height:15px;padding-left:5px;padding-right:5px;padding-bottom:2px;padding-top:2px;white-space:nowrap;text-align:left;background-color:#e8eadd;}.dottedLineCentered {background-image:url("../../Comm_Images/dotten-line.gif");background-repeat:repeat-x;background-position:center;height:8px;width:400px;
}.total {font-family:Arial,Helvetica,sans-serif;font-size:0.7em;font-weight:bold;color:#000000;padding-top:10px;padding-right:30px;line-height:1.5em;text-align:right;
}.otherCon {width:400px;text-align:right;margin-top:20px;
}/**************CheckOut.aspx************************/
.checkoutContent {font-family:Arial,Helvetica,sans-serif;background-color:#ffffff;white-space:nowrap;color:#333333;width:270px;padding-left:150px;padding-top:20px;padding-bottom:33px;
}.checkoutHeaders {font-family:Arial,Helvetica,sans-serif;font-size:0.9em;font-weight:bold;color:#333333;text-transform:capitalize;white-space:nowrap;height:30px;padding-top:3px;padding-bottom:5px;
}.checkoutButtonBg {text-align:right;width:336px;
}.continue {font-family:Tahoma,Arial,Helvetica,sans-serif;font-size:0.7em;color:#000000;text-decoration:none;font-weight:bold;background-image:url("../../Comm_Images/button-continue.gif");background-repeat:no-repeat;background-position:right 7px;padding-right:22px;padding-top:9px;margin-right:7px;cursor:pointer;line-height:40px;
}.submit {font-family:Tahoma,Arial,Helvetica,sans-serif;background-color:#fb9d00;font-size:0.7em;color:#ffffff;text-decoration:none;font-weight:bold;cursor:pointer;line-height:30px;border:1px solid;border-bottom-color:#f07c00;border-top-color:#ffcc00;border-right-color:#f07c00;border-left-color:#ffcc00;padding-right:10px;padding-left:10px;padding-top:1px;padding-bottom:1px;
}.checkOutLabel {font-family:Arial,Helvetica,sans-serif;font-size:0.7em;color:#333333;margin-left:3px;margin-bottom:10px;text-align:left;
}.back {font-family:Tahoma,Arial,Helvetica,sans-serif;font-size:0.7em;color:#000000;text-decoration:none;font-weight:bold;background-image:url("../../Comm_Images/button-back.gif");background-repeat:no-repeat;background-position:left 7px;padding-left:22px;padding-top:9px;margin-left:7px;cursor:pointer;line-height:40px;
}.checkoutTextbox {font-size:1em;color:#000000;text-indent:3px;background-color:#eae9e4;border-width:1px;border-style:solid;border-top-color:#c6c3b3;border-right-color:#7c7d6a;border-bottom-color:#000000;border-left-color:#7c7d6a;height:16px;margin-top:1px;
}.checkoutDropdown {font-size:1em;color:#000000;text-indent:3px;background-color:#eae9e4;border-width:1px;border-style:solid;border-top-color:#c6c3b3;border-right-color:#7c7d6a;border-bottom-color:#000000;height:20px;margin-top:2px;
}

创建数据库

sql

CREATE DATABASE netPetShop;use netPetShop;--用户表
CREATE TABLE account(user_name nvarchar(256) not null,user_pwd nvarchar(16)  not null,cname nvarchar(80) null,country nvarchar(80) null,province nvarchar(80) null,city nvarchar(80) null,address nvarchar(80) null,zip_code nvarchar(80) null,phone nvarchar(80) null,email nvarchar(80) null,primary key(user_name)
);--宠物分类表
CREATE TABLE category(category_id nvarchar(50) not null,name nvarchar(80) not null,descn nvarchar(255) null,primary key(category_id)
);--宠物表
CREATE TABLE product(product_id nvarchar(50) not null,category_id nvarchar(50) not null,name nvarchar(80) not null,descn nvarchar(255) not null,pro_image nvarchar(80) not null,list_price decimal(18,2) not null,primary key(product_id)
);--购物车
CREATE TABLE cart(user_name nvarchar(256) not null,product_id nvarchar(50) not null,name nvarchar(80) not null,list_price decimal(18,2) not null,category_id nvarchar(50) not null,quantity int not null,primary key(user_name,product_id)
);--订单表
CREATE TABLE orders(order_id int not null identity(1,1),user_name nvarchar(256) not null,order_date datetime not null,primary key(order_id)
);--订单明细表
CREATE TABLE orderlineitem(item_id int not null identity(1,1),order_id int not null,product_id nvarchar(50) not null,quantity int not null,list_price decimal(18,2) not null,primary key(item_id)
);insert into category values('BACKYARD','大型动物','大型动物');
insert into category values('BIRDS','鸟类','鸟类');
insert into category values('BUGS','昆虫','昆虫');
insert into category values('FISH','鱼类','鱼类');insert into product values('BD-01','BIRDS','塘鹅','动静皆宜','~/Prod_Images/Birds/icon-pelican.gif',86);
insert into product values('BD-02','BIRDS','企鹅','形态可掬','~/Prod_Images/Birds/icon-penguin.gif',130);
insert into product values('BD-03','BIRDS','翼龙','亿年前的空中霸主','~/Prod_Images/Birds/icon-pteranodon.gif',2100);
insert into product values('BD-04','BIRDS','猫头鹰','日夜守候','~/Prod_Images/Birds/icon-owl.gif',40);
insert into product values('BD-05','BIRDS','鸭子','口齿不清但歌声美妙','~/Prod_Images/Birds/icon-duck.gif',32);
insert into product values('BG-01','BUGS','蚂蚁','搬运工','~/Prod_Images/Bugs/icon-ant.gif',2);
insert into product values('BG-02','BUGS','蝴蝶','越大越美','~/Prod_Images/Bugs/icon-butterfly.gif',8);
insert into product values('BG-03','BUGS','蜘蛛','冷酷美','~/Prod_Images/Bugs/icon-spider.gif',5);
insert into product values('BG-04','BUGS','蜗牛','你的柔软伙伴','~/Prod_Images/Bugs/icon-slug.gif',7);
insert into product values('BG-05','BUGS','青蛙','想灭蚊吗','~/Prod_Images/Bugs/icon-frog.gif',12);
insert into product values('BG-06','BUGS','蜻蜓','精致的宠物','~/Prod_Images/Bugs/icon-dragonfly.gif',3);
insert into product values('BY-01','BACKYARD','绵羊','软绵绵的拥抱','~/Prod_Images/Backyard/icon-sheep.gif',120);
insert into product values('BY-02','BACKYARD','猫','多情而敏感','~/Prod_Images/Backyard/icon-cat.gif',80);
insert into product values('BY-03','BACKYARD','浣熊','胃口不错','~/Prod_Images/Backyard/icon-raccoon.gif',240);
insert into product values('BY-04','BACKYARD','鹅','曲项向天歌','~/Prod_Images/Backyard/icon-goose.gif',45);
insert into product values('BY-05','BACKYARD','巨蟹','冰箱里出现','~/Prod_Images/Backyard/icon-crad.gif',28);
insert into product values('BY-06','BACKYARD','臭鼬','味道比较浓厚','~/Prod_Images/Backyard/icon-skunk.gif',98);
insert into product values('BY-07','BACKYARD','斑马','摩登的美女','~/Prod_Images/Backyard/icon-zebra.gif',820);
insert into product values('FI-01','FISH','丑鱼','海底总动员','~/Prod_Images/Fish/icon-meno.gif',20);
insert into product values('FI-02','FISH','河豚','温度越高,身体越大','~/Prod_Images/Fish/icon-ballonfish.gif',18);
insert into product values('FI-03','FISH','盲鱼','视觉退化','~/Prod_Images/Fish/icon-blindfish.gif',34);
insert into product values('FI-04','FISH','海蟹','喂食时会跳舞','~/Prod_Images/Fish/icon-cradfish.gif',16);
insert into product values('FI-05','FISH','章鱼','给你按摩','~/Prod_Images/Fish/icon-eucalyptus.gif',27);
insert into product values('FI-07','FISH','鲨鱼','小心咬你','~/Prod_Images/Fish/icon-nosyfish.gif',360);
insert into product values('FI-08','FISH','巨齿鱼','素食动物','~/Prod_Images/Fish/icon-toothferry.gif',280);

创建首页

default1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default1.aspx.cs" Inherits="dynamicweb11_1.Default1" %><!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>欢迎来到.NET宠物商店</title>
<!--
代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日
-->
</head>
<body class="homeBody"><form id="form1" runat="server"><!--主页头内容-->    <div class="divHome"><div id="logoH">.NET PET SHOP</div><!--搜索--><div class="homeBgSearch"><asp:TextBox ID="txtSearch" runat="server" CssClass="homeSearchBox"></asp:TextBox><asp:ImageButton ID="btnSearch" runat="server" CssClass="paddingSearchicon" ImageUrl="Comm_Images/button-search.gif" OnClick="btnSearch_Click" /><!--登录退出---><asp:LinkButton ID="btnLgnStatus" runat="server" CssClass="homeLink" Text="登录" OnClick="btnLgnStatus_Click"></asp:LinkButton></div></div><div class="homeL"></div><!--主页主体内容--><div class="divContent"><div id="leftH"><div id="seahorse"><img height="280" src="Comm_Images/seahorse.png" width="112" alt="sea Horse" /></div><div id="mainContent"><div class="welcome">欢迎来到动物世界</div><div class="bgControl"><div class="intro">从我们精选的宠物中挑选你的最爱吧</div><div class="navigationLabel">宠物分类:</div><div class="ctMenu"><!--宠物分类菜单--><asp:DataList ID="dlCategories" runat="server" DataKeyField="category_id" DataSourceID="sdsCategory"><ItemTemplate><div class="navigationLinks"><!--.NET的数据绑定分为单向绑定和双向绑定。Eval("字段名")为单向只读绑定,只获取字段数据。Bind("字段名")为双向绑定,可把控件上的数据更新到数据源中,用于编辑。--><asp:HyperLink ID="lnkCategory" runat="server" NavigateUrl='<%# string.Format("~/Products1.aspx?categoryId={0}&name={1}",Eval("category_id"),Eval("name")) %>' Text='<%# Eval("name") %>'></asp:HyperLink></div><br /><br /></ItemTemplate></asp:DataList><asp:SqlDataSource ID="sdsCategory" runat="server" ConnectionString="<%$ ConnectionStrings:cnPetShop %>" SelectCommand="SELECT [category_id], [name] FROM [category]"></asp:SqlDataSource></div><div class="footerHome">Powered by .NET 4.6</div></div></div></div><div class="fishPosition"><img  src="Comm_Images/home-fish.png" border="0"/></div></div></form>
</body>
</html>

default1.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/*****************************代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日******************************/
namespace dynamicweb11_1
{public partial class Default1 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void btnSearch_Click(object sender, ImageClickEventArgs e){if (!String.IsNullOrEmpty(txtSearch.Text)){ Response.Redirect("~/Search.aspx?keywords=" + txtSearch.Text);}}protected void btnLgnStatus_Click(object sender, EventArgs e){Response.Redirect("SignIn1.aspx");}}
}

创建母版页

masterpage1.master

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="MasterPage1.master.cs" Inherits="dynamicweb11_1.MasterPage1" %><!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>.NET宠物商店</title>
<!--
代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日
-->
</head>
<body><form id="form1" runat="server"><!--母版页头部内容--><div class="divMaster"><div class="divLogoM"><a href="Default1.aspx">.NET PET SHOP</a></div><div class="signIn"><asp:TextBox ID="txtSearch" runat="server" CssClass="textboxSearch"></asp:TextBox><asp:ImageButton ID="btnSearch" runat="server" AlternateText="Search" CausesValidation="false" ImageUrl="Comm_Images/button-search.gif" OnClick="btnSearch_Click"/><!--我的资料--><asp:HyperLink ID="hlProfile" runat="server" NavigateUrl="UserProfile1.aspx" CssClass="link">我的资料</asp:HyperLink><!--登录/退出--><asp:LinkButton ID="btnLgnStatus" runat="server" Text="登录" OnClick="btnLgnStatus_Click" CausesValidation="False"></asp:LinkButton><div class="checkOut"><a href="ShoppingCart1.aspx"><img border="0" src="Comm_Images/button-cart.jpg"/></a><a href="ShoppingCart1.aspx" class="checkOutLink">购物车</a></div></div></div><!--母版页主体内容--><div class="divTitle"><div class="breadrumb"><!--显示用户名欢迎信息--><asp:Literal ID="ltlName" runat="server" Text="欢迎,访客"></asp:Literal></div><div class="pageHeader"><!--网页内标题--><asp:Literal ID="ltlHeader" runat="server"></asp:Literal></div></div><div class="divCenter"><div class="leftMenu">&nbsp;<!--宠物分类菜单--><asp:DataList ID="dlCategory" runat="server" DataKeyField="category_id" DataSourceID="sdsCategory"><ItemTemplate><div class="menuLinks"><asp:HyperLink ID="lnkCategory" runat="server" NavigateUrl='<%# string.Format("~/Products1.aspx?categoryId={0}&name={1}",Eval("category_id"),Eval("name")) %>' Text='<%# Eval("name") %>'></asp:HyperLink></div><br /></ItemTemplate></asp:DataList><asp:SqlDataSource ID="sdsCategory" runat="server" ConnectionString="<%$ ConnectionStrings:cnPetShop %>" SelectCommand="SELECT [category_id], [name] FROM [category]"></asp:SqlDataSource></div><div class="mainContent"><!--占位符--><asp:ContentPlaceHolder ID="cphPage" runat="server"></asp:ContentPlaceHolder><div class="footer">powered by .net 4.6</div></div></div></form>
</body>
</html>

masterpage1.master.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/*****************************代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日******************************/
namespace dynamicweb11_1
{public partial class MasterPage1 : System.Web.UI.MasterPage{protected void Page_Load(object sender, EventArgs e){ltlHeader.Text = Page.Header.Title;Page.UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;if (Session["UserName"] != null){ltlName.Text = "欢迎," + Session["UserName"].ToString();btnLgnStatus.Text = "退出";}else{btnLgnStatus.Text = "登录";}}protected void btnSearch_Click(object sender, ImageClickEventArgs e){if (!String.IsNullOrEmpty(txtSearch.Text)){Response.Redirect("~/Search.aspx?keywords=" + txtSearch.Text);}}protected void btnLgnStatus_Click(object sender, EventArgs e){if (Session["UserName"] == null){Response.Redirect("~/SignIn1.aspx");}else{Session["UserName"] = null;Response.Redirect("~/SignIn1.aspx");}}}
}

创建内容页

signin1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SignIn1.aspx.cs" Inherits="dynamicweb11_1.SignIn1" MasterPageFile="~/MasterPage1.Master" %>
<asp:Content runat="server" ContentPlaceHolderID="cphPage">
<!--
代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日
--><div class="signinPosition"><div class="signinHeader">用户登录</div><table><tr><td class="signinLabel">用户名:</td><td><asp:TextBox ID="txtName" runat="server" CssClass="signinTextbox" Width="155px"></asp:TextBox><asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="txtName" ErrorMessage="填写用户名" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td></tr><tr><td class="signinLabel">密码:</td><td><asp:TextBox ID="txtPassword" runat="server" CssClass="signinTextbox" TextMode="Password" Width="155px"></asp:TextBox><asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="txtPassword" ErrorMessage="填写密码" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td></tr></table><asp:CheckBox ID="chkRememberMe" runat="server" Text="记住我" Font-Size="Small" /><asp:Button ID="btnSubmit" runat="server" CssClass="signinButton" Text="登录" OnClick="btnSubmit_Click" /><br /><asp:Label ID="lblError" runat="server" CssClass="ErrorLabel" Text=""></asp:Label><br /><asp:HyperLink ID="hlNewUser" runat="server" CssClass="linkNewUser" NavigateUrl="~/NewUser1.aspx">注册新用户</asp:HyperLink></div>
</asp:Content>

signin1.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/*****************************代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日******************************/
namespace dynamicweb11_1
{public partial class SignIn1 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){if (Request.Cookies["UserName"] != null){txtName.Text = Request.Cookies["UserName"].Value;}}}protected void btnSubmit_Click(object sender, EventArgs e){string conString = System.Configuration.ConfigurationManager.ConnectionStrings["cnPetShop"].ToString();System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(conString);con.Open();string sql = "select * from account where user_name=@uName and user_pwd=@uPwd";System.Data.SqlClient.SqlCommand cmd  = new System.Data.SqlClient.SqlCommand(sql,con);cmd.Parameters.AddWithValue("@uName",txtName.Text);cmd.Parameters.AddWithValue("@uPwd",txtPassword.Text);System.Data.SqlClient.SqlDataReader reader = cmd.ExecuteReader();if(reader.HasRows){if (chkRememberMe.Checked == true){Response.Cookies["UserName"].Value = txtName.Text;//Response.Cookies["UserName"].Expires = DateTime.Now.AddDays("7");Response.Cookies["UserName"].Expires = DateTime.Now.AddMinutes(2);}Session["UserName"] = txtName.Text;if(Request.QueryString["from"] == null){Response.Redirect("~/Products1.aspx?categoryId=BACKYARD");}else{Response.Redirect(Request.QueryString["from"]);}}else{lblError.Text = "用户名或密码错误";}reader.Close();con.Close();}}
}

newuser1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewUser1.aspx.cs" Inherits="dynamicweb11_1.NewUser1" MasterPageFile="~/MasterPage1.Master" %>
<asp:Content runat="server" ContentPlaceHolderID="cphPage">
<!--
代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日
--><div class="signinPosition"><asp:Panel ID="plRegister" runat="server"><div class="signinHeader">注册新用户</div><table><tr><td class="signinLabel">用户名:</td><td><asp:TextBox ID="txtName" runat="server" CssClass="signinTextbox" Width="155px"></asp:TextBox><asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="txtName" ErrorMessage="请填写用户名" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator><asp:Label ID="lblError" runat="server" Text=""></asp:Label></td></tr><tr><td class="signinLabel">密码:</td><td><asp:TextBox ID="txtPassword" runat="server" CssClass="signinTextbox" TextMode="Password" Width="155px"></asp:TextBox><asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="txtPassword" ErrorMessage="请填写密码" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td></tr><tr><td class="signinLabel">确认密码:</td><td><asp:TextBox ID="txtConfirmPwd" runat="server" CssClass="signinTextbox" TextMode="Password" Width="155px"></asp:TextBox><asp:RequiredFieldValidator ID="ConfirmPwdRequired" runat="server" ControlToValidate="txtConfirmPwd" ErrorMessage="请填写确认密码" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator><asp:CompareValidator ID="PwdCompare" runat="server" ControlToCompare="txtPassword" ControlToValidate="txtConfirmPwd" ErrorMessage="两次密码填写不一致" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:CompareValidator></td></tr></table><asp:Button ID="btnSubmit" runat="server" CssClass="signinButton" Text="注册" OnClick="btnSubmit_Click" /></asp:Panel><asp:Panel ID="plSuccess" runat="server" Visible="false"><p class="signinLabel"><br /><strong>感谢你的注册。</strong></p><p class="signinLabel">用户创建成功,现在你可以:</p><p class="signinLabel"><a class="signinNewUser" href="Products1.aspx?categoryId=BACKYARD">继续选购</a></p><p class="signinLabel"><a class="signinNewUser" href="ShoppingCart1.aspx">购物车</a></p><p class="signinLabel"><a class="signinNewUser" href="UserProfile1.aspx">变更你的资料</a></p></asp:Panel></div>
</asp:Content>

newuser1.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/*****************************代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日******************************/
namespace dynamicweb11_1
{public partial class NewUser1 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void btnSubmit_Click(object sender, EventArgs e){string conString = System.Configuration.ConfigurationManager.ConnectionStrings["cnPetShop"].ToString();System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(conString);con.Open();string sqlSelect = "select * from account where user_name=@uName";System.Data.SqlClient.SqlCommand cmdSelect = new System.Data.SqlClient.SqlCommand(sqlSelect, con);cmdSelect.Parameters.AddWithValue("@uName",txtName.Text);System.Data.SqlClient.SqlDataReader reader = cmdSelect.ExecuteReader();if (reader.HasRows){lblError.Text = "此用户已存在";reader.Close();}else{reader.Close();string sqlInsert = "insert into account(user_name,user_pwd) values(@uName,@uPwd)";System.Data.SqlClient.SqlCommand cmdInsert = new System.Data.SqlClient.SqlCommand(sqlInsert, con);cmdInsert.Parameters.AddWithValue("@uName",txtName.Text);cmdInsert.Parameters.AddWithValue("@uPwd",txtPassword.Text);cmdInsert.ExecuteNonQuery();plRegister.Visible = false;plSuccess.Visible = true;}con.Close();}}
}

checkout1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CheckOut1.aspx.cs" Inherits="dynamicweb11_1.CheckOut1" MasterPageFile="~/MasterPage1.Master" %>
<asp:Content runat="server" ContentPlaceHolderID="cphPage">
<!--
代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日
--><div class="checkoutContent"><!--提交订单区域--><asp:Panel ID="panForm" runat="server"><div class="cartHeader">订购商品</div><!---订购商品列表--><asp:SqlDataSource ID="sdsCart" runat="server" ConnectionString="<%$ ConnectionStrings:cnPetShop %>" SelectCommand="SELECT * FROM [cart] WHERE user_name=@uName" OnSelecting="sdsCart_Selecting"><SelectParameters><asp:Parameter Name="uName" Type="String"/></SelectParameters></asp:SqlDataSource><asp:GridView ID="gvCart" runat="server" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="user_name,product_id" DataSourceID="sdsCart" EmptyDataText="购物车中没有商品" Width="400px" ForeColor="#333333" GridLines="None" OnRowDataBound="gvCart_RowDataBound"><AlternatingRowStyle BackColor="White" /><Columns><asp:BoundField DataField="name" HeaderText="名称" SortExpression="name" ><ItemStyle Width="170px" /></asp:BoundField><asp:BoundField DataField="quantity" HeaderText="数量" SortExpression="quantity"><ItemStyle HorizontalAlign="Center" Width="40px" /></asp:BoundField><asp:BoundField DataField="list_price" DataFormatString="{0:C}" HeaderText="单价" SortExpression="list_price"><ItemStyle HorizontalAlign="Center" Width="40px" /></asp:BoundField></Columns><EditRowStyle BackColor="#2461BF" /><FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /><HeaderStyle CssClass="labelLists" BackColor="#507CD1" Font-Bold="True" ForeColor="White" /><PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /><RowStyle CssClass="listItem" Height="30px" Width="250px" BackColor="#EFF3FB" /><SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /><SortedAscendingCellStyle BackColor="#F5F7FB" /><SortedAscendingHeaderStyle BackColor="#6D95E1" /><SortedDescendingCellStyle BackColor="#E9EBEF" /><SortedDescendingHeaderStyle BackColor="#4870BE" /></asp:GridView><!--订购商品金额总计--><div class="total"><asp:Literal ID="ltlTotal" runat="server"></asp:Literal></div><!--个人资料信息--><asp:SqlDataSource ID="sdsAccount" runat="server" ConnectionString="<%$ ConnectionStrings:cnPetShop %>" SelectCommand="SELECT * FROM [account] WHERE user_name=@uName" OnSelecting="sdsAccount_Selecting" UpdateCommand="UPDATE [account] SET [cname] = @cname, [country] = @country, [province] = @province, [city] = @city, [address] = @address, [zip_code] = @zip_code, [phone] = @phone, [email] = @email WHERE [user_name] = @user_name"><SelectParameters><asp:Parameter  Name="uName" Type="String"/></SelectParameters><UpdateParameters><asp:Parameter Name="cname" Type="String" /><asp:Parameter Name="country" Type="String" /><asp:Parameter Name="province" Type="String" /><asp:Parameter Name="city" Type="String" /><asp:Parameter Name="address" Type="String" /><asp:Parameter Name="zip_code" Type="String" /><asp:Parameter Name="phone" Type="String" /><asp:Parameter Name="email" Type="String" /><asp:Parameter Name="user_name" Type="String" /></UpdateParameters></asp:SqlDataSource><asp:FormView ID="fvAccount" runat="server" DataSourceID="sdsAccount" DefaultMode="Edit" DataKeyNames="user_name" OnItemUpdated="fvAccount_ItemUpdated"><EditItemTemplate><table style="border-bottom:1px dotted #555555;border-spacing:0;padding:0;border-collapse:collapse;"><tr><td class="label" width="50%" style="height:50px;">姓名:<br /><asp:TextBox ID="txtCname" runat="server" Text='<%# Bind("cname") %>' CssClass="checkoutTextbox" MaxLength="80" Width="155px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valFirstName" runat="server" ControlToValidate="txtCname" ErrorMessage="输入姓名" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td><td class="label" width="40%">&nbsp;</td></tr><tr><td class="label" style="height:50px;">国家:<br /><asp:TextBox ID="txtCountry" runat="server" Text='<%# Bind("country") %>' CssClass="checkoutTextbox" MaxLength="80" Width="155px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valCountry" runat="server" ControlToValidate="txtCountry" ErrorMessage="输入国家" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td><td class="label">省:<br /><asp:TextBox ID="txtProvince" runat="server" Text='<%# Bind("province") %>' CssClass="checkoutTextbox" MaxLength="80" Width="155px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valProvince" runat="server" ControlToValidate="txtProvince" ErrorMessage="输入省份" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td></tr><tr><td class="label" style="height:50px;">城市:<br /><asp:TextBox ID="txtCity" runat="server" Text='<%# Bind("city") %>' CssClass="checkoutTextbox" MaxLength="80" Width="155px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valCity" runat="server" ControlToValidate="txtCity" ErrorMessage="输入城市" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td><td class="label" style="height:50px;">邮编:<br /><asp:TextBox ID="txtZipcode" runat="server" Text='<%# Bind("zip_code") %>' CssClass="checkoutTextbox" MaxLength="80" Width="80px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valZipcode" runat="server" ControlToValidate="txtZipcode" ErrorMessage="输入邮编" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td></tr><tr><td class="label" colspan="2" style="height:50px;">地址:<br /><asp:TextBox ID="txtAddress" runat="server" Text='<%# Bind("address") %>' CssClass="checkoutTextbox" MaxLength="80" Width="330px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valAddress" runat="server" ControlToValidate="txtAddress" ErrorMessage="输入地址" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td></tr><tr><td class="label" colspan="2" style="height:50px;">电话:<br /><asp:TextBox ID="txtPhone" runat="server" Text='<%# Bind("phone") %>' CssClass="checkoutTextbox" MaxLength="80" Width="155px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valPhone" runat="server" ControlToValidate="txtPhone" ErrorMessage="输入电话" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td></tr><tr><td class="label" colspan="2" style="height:70px;" valign="top">电子邮箱:<br /><asp:TextBox ID="txtEmail" runat="server" Text='<%# Bind("email") %>' CssClass="checkoutTextbox" MaxLength="80" Width="330px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valEmail" runat="server" ControlToValidate="txtEmail" ErrorMessage="输入电子邮件" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator><asp:RegularExpressionValidator ID="valEmail1" ControlToValidate="txtEmail" runat="server" ErrorMessage="无效的Email地址" Display="Dynamic" Font-Size="Small" ForeColor="Red" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator></td></tr></table><div class="checkoutButtonBg"><!--提交更新的命令按钮--><asp:LinkButton ID="btnSubmit" runat="server" CausesValidation="true" CommandName="Update" CssClass="submit" Text="更新资料"></asp:LinkButton></div></EditItemTemplate></asp:FormView><asp:Label ID="lblMessage" runat="server" Text=""></asp:Label><!--提交订单按钮--><div class="checkoutButtonBg"><asp:LinkButton ID="FinishButton" runat="server" CssClass="submit" Text="提交订单" OnClick="FinishButton_Click"></asp:LinkButton></div></asp:Panel><!--完成信息区域--><asp:Panel ID="panFinish" runat="server" Visible="false"><div class="checkOutLabel">感谢你的订购!<br /><br /><p>订单商品将开始通过快递配送,请保持联系方式畅通。</p><p>如对订单有任何疑问,请随时联系我们的客户服务400123456</p><p>.NET宠物商店</p></div></asp:Panel></div>
</asp:Content>

checkout1.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;/*****************************代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日******************************/namespace dynamicweb11_1
{public partial class CheckOut1 : System.Web.UI.Page{private decimal total;protected void Page_Load(object sender, EventArgs e){if (Session["UserName"] == null){Response.Redirect("~/SignIn.aspx?from=CheckOut1.aspx");}}protected void sdsCart_Selecting(object sender, SqlDataSourceSelectingEventArgs e){e.Command.Parameters[0].Value = Session["UserName"].ToString();}protected void gvCart_RowDataBound(object sender, GridViewRowEventArgs e){if (e.Row.RowType == DataControlRowType.DataRow){System.Data.DataRowView row1 = e.Row.DataItem as System.Data.DataRowView;total += Convert.ToInt32(row1.Row["quantity"]) * Convert.ToDecimal(row1.Row["list_price"]);}else if (e.Row.RowType == DataControlRowType.Footer){ltlTotal.Text = "总价:" + total.ToString("C");}else{ltlTotal.Text = "";}}protected void sdsAccount_Selecting(object sender, SqlDataSourceSelectingEventArgs e){e.Command.Parameters[0].Value = Session["UserName"].ToString();}protected void fvAccount_ItemUpdated(object sender, FormViewUpdatedEventArgs e){lblMessage.Text = "你的资料已更新<br>";}protected void FinishButton_Click(object sender, EventArgs e){string cnString = System.Configuration.ConfigurationManager.ConnectionStrings["cnPetShop"].ToString();System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(cnString);con.Open();string sqlOrder = "insert into orders values(@user_name,@order_date)";sqlOrder += " ; SELECT @@identity AS 'id'";System.Data.SqlClient.SqlCommand cmdOrder = new System.Data.SqlClient.SqlCommand(sqlOrder, con);cmdOrder.Parameters.AddWithValue("@user_name", Session["UserName"]);cmdOrder.Parameters.AddWithValue("@order_date",DateTime.Now.ToShortDateString());string order_id = cmdOrder.ExecuteScalar().ToString();string sqlCart = "select * from cart where user_name=@uName";System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(sqlCart, con);adapter.SelectCommand.Parameters.AddWithValue("@uName",Session["UserName"]);System.Data.DataSet dsCart = new System.Data.DataSet();adapter.Fill(dsCart);for (int i = 0; i < dsCart.Tables[0].Rows.Count; i++){string sqlOrderDetails = "insert into orderlineitem values(@order_id,@product_id,@quantity,@list_price)";System.Data.SqlClient.SqlCommand cmdDetails = new System.Data.SqlClient.SqlCommand(sqlOrderDetails, con);cmdDetails.Parameters.AddWithValue("@order_id", order_id);cmdDetails.Parameters.AddWithValue("@product_id",dsCart.Tables[0].Rows[i]["product_id"]);cmdDetails.Parameters.AddWithValue("@quantity",dsCart.Tables[0].Rows[i]["quantity"]);cmdDetails.Parameters.AddWithValue("@list_price",dsCart.Tables[0].Rows[i]["list_price"]);cmdDetails.ExecuteNonQuery();}string sqlDelete = "delete from cart where user_name=@user_name";System.Data.SqlClient.SqlCommand cmdDelete = new System.Data.SqlClient.SqlCommand(sqlDelete, con);cmdDelete.Parameters.AddWithValue("@user_name",Session["UserName"]);cmdDelete.ExecuteNonQuery();con.Close();panForm.Visible = false;panFinish.Visible = true;}}
}

products1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Products1.aspx.cs" Inherits="dynamicweb11_1.Products1" MasterPageFile="~/MasterPage1.Master" %>
<asp:Content runat="server" ContentPlaceHolderID="cphPage">
<!--
代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日
--><div><asp:DataList ID="dlProduct" runat="server" CellPadding="16" DataKeyField="product_id" DataSourceID="sdsProduct" HorizontalAlign="Center" RepeatColumns="2" Width="620px"><ItemTemplate><div class="divLeft"><img id="imgProduct" alt='<%# Eval("name") %>' src='<%# Eval("pro_image") %>' runat="server"/></div><div class="divRight"><div class="productName"><%# Eval("name") %></div><div class="productDescription"><%# Eval("descn ") %></div><div class="itemText">价格:<%# Eval("list_price ","{0:c}") %></div><div class="itemText"><img id="imgCart" src="Comm_Images/button-cart.jpg" /><asp:HyperLink ID="lnkCart" runat="server" NavigateUrl='<%# string.Format("~/ShoppingCart1.aspx?productId={0}&name={1}&price={2}&categoryId={3}",Eval("product_id "),Eval("name"),Eval("list_price "),Eval("category_id ")) %>' CssClass="linkCart" Text="添加购物车"></asp:HyperLink></div></div></ItemTemplate></asp:DataList><asp:SqlDataSource ID="sdsProduct" runat="server" ConnectionString="<%$ ConnectionStrings:cnPetShop %>" SelectCommand="SELECT * FROM [product] WHERE ([category_id] = @category_id)"><SelectParameters><asp:QueryStringParameter Name="category_id" QueryStringField="categoryId" Type="String" /></SelectParameters></asp:SqlDataSource></div>
</asp:Content>

products1.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/*****************************代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日******************************/
namespace dynamicweb11_1
{public partial class Products1 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (Request.QueryString["name"] != null){ //Page.Master.Page.Title = Request.QueryString["name"].ToString(); //正确的写法Page.Title = Request.QueryString["name"].ToString();}}}
}

search.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Search.aspx.cs" Inherits="dynamicweb11_1.Search" MasterPageFile="~/MasterPage1.Master" %>
<asp:Content runat="server" ContentPlaceHolderID="cphPage"><p>很抱歉,这个功能暂未开发,你可以试着自己完善。</p>
</asp:Content>

shoppingcart1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ShoppingCart1.aspx.cs" Inherits="dynamicweb11_1.ShoppingCart1" MasterPageFile="~/MasterPage1.Master" %>
<asp:Content runat="server" ContentPlaceHolderID="cphPage">
<!--
代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日
--><div class="cartPosition"><div class="cartHeader">购物车中的商品</div><!--购物车内容--><asp:SqlDataSource ID="sdsCart" runat="server" ConnectionString="<%$ ConnectionStrings:cnPetShop %>" OnSelecting="sdsCart_Selecting" SelectCommand="SELECT * FROM [cart] WHERE user_name=@uName" DeleteCommand="DELETE FROM [cart] WHERE [user_name] = @user_name AND [product_id] = @product_id" InsertCommand="INSERT INTO [cart] ([user_name], [product_id], [name], [list_price], [category_id], [quantity]) VALUES (@user_name, @product_id, @name, @list_price, @category_id, @quantity)" UpdateCommand="UPDATE [cart] SET [quantity] = @quantity WHERE [user_name] = @user_name AND [product_id] = @product_id"><SelectParameters><asp:Parameter  Name="uName" Type="String"/></SelectParameters><DeleteParameters><asp:Parameter Name="user_name" Type="String" /><asp:Parameter Name="product_id" Type="String" /></DeleteParameters><InsertParameters><asp:Parameter Name="user_name" Type="String" /><asp:Parameter Name="product_id" Type="String" /><asp:Parameter Name="name" Type="String" /><asp:Parameter Name="list_price" Type="Decimal" /><asp:Parameter Name="category_id" Type="String" /><asp:Parameter Name="quantity" Type="Int32" /></InsertParameters><UpdateParameters><asp:Parameter Name="quantity" Type="Int32" /><asp:Parameter Name="user_name" Type="String" /><asp:Parameter Name="product_id" Type="String" /></UpdateParameters></asp:SqlDataSource><asp:GridView ID="gvCart" runat="server" HorizontalAlign="Center" Width="400px" EmptyDataText="购物车中没有商品" AutoGenerateColumns="False" DataKeyNames="user_name,product_id" DataSourceID="sdsCart" CellPadding="4" ForeColor="#333333" GridLines="None" OnRowDataBound="gvCart_RowDataBound"><AlternatingRowStyle BackColor="White" /><Columns><asp:ButtonField ButtonType="Button" CommandName="Delete" Text="删除"><ItemStyle Width="40px" /></asp:ButtonField><asp:HyperLinkField DataNavigateUrlFields="category_id" DataTextField="name" DataNavigateUrlFormatString="~/Products1.aspx?categoryId={0}" HeaderText="名称" ><ItemStyle Width="200px" /></asp:HyperLinkField><asp:TemplateField HeaderText="数量"><ItemTemplate><asp:TextBox ID="txtQuantity" runat="server" Width="20px" Text='<%# Bind("quantity") %>' AutoPostBack="True" OnTextChanged="txtQuantity_TextChanged"></asp:TextBox><asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="txtQuantity" ErrorMessage="请输入1到100的数字" MaximumValue="100" MinimumValue="1" Type="Integer" Display="Dynamic"></asp:RangeValidator></ItemTemplate><ItemStyle Width="50px" /></asp:TemplateField><asp:BoundField DataField="list_price" DataFormatString="{0:C}" HeaderText="单价" SortExpression="list_price"><ItemStyle HorizontalAlign="Center" Width="50px" /></asp:BoundField><asp:HyperLinkField DataNavigateUrlFields="product_Id" DataNavigateUrlFormatString="~/WishList1.aspx?productId={0}" Text="收藏"><ControlStyle CssClass="linkWishlist" Width="50px" /><ItemStyle Width="50px" /></asp:HyperLinkField></Columns><EditRowStyle BackColor="#2461BF" /><FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /><HeaderStyle CssClass="labelLists" BackColor="#507CD1" Font-Bold="True" ForeColor="White" /><PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /><RowStyle CssClass="listItem" Height="30px" BackColor="#EFF3FB" /><SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /><SortedAscendingCellStyle BackColor="#F5F7FB" /><SortedAscendingHeaderStyle BackColor="#6D95E1" /><SortedDescendingCellStyle BackColor="#E9EBEF" /><SortedDescendingHeaderStyle BackColor="#4870BE" /></asp:GridView><!--总计--><div class="dottedLineCentered">&nbsp;</div><div class="total"><asp:Literal ID="ltlTotal" runat="server"></asp:Literal></div><!--继续选购/结算--><div><asp:LinkButton ID="lbtnBack" runat="server" CssClass="linkCheckOut" OnClick="lbtnBack_Click">继续选购</asp:LinkButton><br /><asp:LinkButton ID="lbtnCheckout" runat="server" CssClass="linkCheckOut" Text="结算" OnClick="lbtnCheckout_Click"></asp:LinkButton></div></div>
</asp:Content>

shoppingcart1.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/*****************************代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日******************************/
namespace dynamicweb11_1
{public partial class ShoppingCart1 : System.Web.UI.Page{//private decimal total;protected void Page_Load(object sender, EventArgs e){if (Session["UserName"] == null){if (Request.QueryString["categoryId"] == null) return;string qsValue = "~/Products1.aspx?categoryId=" + Request.QueryString["categoryId"].ToString();Response.Redirect("~/SignIn1.aspx?from=" + qsValue);}if (!IsPostBack){ if(!string.IsNullOrEmpty(Request.QueryString["productId"])){string cnString = System.Configuration.ConfigurationManager.ConnectionStrings["cnPetShop"].ToString();System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(cnString);con.Open();string sqlUpdate = "update cart set quantity=quantity + 1 where user_name=@uName and product_id=@proId";System.Data.SqlClient.SqlCommand cmdUpdate = new System.Data.SqlClient.SqlCommand(sqlUpdate,con);cmdUpdate.Parameters.AddWithValue("@uName",Session["UserName"]);cmdUpdate.Parameters.AddWithValue("@proId",Request.QueryString["productId"]);int numUpdate = cmdUpdate.ExecuteNonQuery();if(numUpdate <= 0){string sqlInsert  = "insert into cart values(@uName,@proId,@name,@price,@categoryId,1)";System.Data.SqlClient.SqlCommand cmdInsert  = new System.Data.SqlClient.SqlCommand(sqlInsert,con);cmdInsert.Parameters.AddWithValue("@uName",Session["UserName"]);cmdInsert.Parameters.AddWithValue("@proId",Request.QueryString["productId"]);cmdInsert.Parameters.AddWithValue("@name",Request.QueryString["name"]);cmdInsert.Parameters.AddWithValue("@price",Request.QueryString["price"]);cmdInsert.Parameters.AddWithValue("@categoryId",Request.QueryString["categoryId"]);cmdInsert.ExecuteNonQuery();}con.Close();}}}protected void sdsCart_Selecting(object sender, SqlDataSourceSelectingEventArgs e){if (Session["UserName"] == null){ Response.Redirect("~/SignIn1.aspx");}e.Command.Parameters[0].Value = Session["UserName"].ToString();}protected void gvCart_RowDataBound(object sender, GridViewRowEventArgs e){if (e.Row.RowType == DataControlRowType.DataRow){System.Data.DataRowView row1 = e.Row.DataItem as System.Data.DataRowView;total += Convert.ToInt32(row1.Row["quantity"]) * Convert.ToDecimal(row1.Row["list_price"]);}else if (e.Row.RowType == DataControlRowType.Footer){ltlTotal.Text = "总价:" + total.ToString("C");}else{ltlTotal.Text = "";}}protected void txtQuantity_TextChanged(object sender, EventArgs e){for (int i = 0; i < gvCart.Rows.Count; i++){gvCart.UpdateRow(i, false);}}protected void lbtnBack_Click(object sender, EventArgs e){if (Request.QueryString["categoryId"] != null){Response.Redirect("~/products1.aspx?categoryId=" + Request.QueryString["categoryId"]);}else{Response.Redirect("~/products1.aspx?categoryId=BACKYARD");}}protected void lbtnCheckout_Click(object sender, EventArgs e){if (gvCart.Rows.Count <= 0){Response.Write("<script>window.alert('请选购商品后进行结算!')</script>");return;}else{Response.Redirect("~/CheckOut1.aspx");}}}
}

userprofile1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UserProfile1.aspx.cs" Inherits="dynamicweb11_1.UserProfile1" MasterPageFile="~/MasterPage1.Master" %>
<asp:Content runat="server" ContentPlaceHolderID="cphPage">
<!--
代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日
--><div class="profilePostition"><div class="checkoutHeaders">个人信息</div><div class="info">用户名:<asp:Label ID="lblName" runat="server" Text="" CssClass="info"></asp:Label></div><!--个人资料修改--><asp:FormView ID="fvAccount" runat="server" DataKeyNames="user_name" DataSourceID="sdsAccount" DefaultMode="Edit" OnItemUpdated="fvAccount_ItemUpdated"><EditItemTemplate><table style="border-bottom:1px dotted #555555;border-spacing:0;padding:0;border-collapse:collapse;"><tr><td class="label" width="50%" style="height:50px;">姓名:<br /><asp:TextBox ID="txtCname" runat="server" Text='<%# Bind("cname") %>' CssClass="checkoutTextbox" MaxLength="80" Width="155px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valFirstName" runat="server" ControlToValidate="txtCname" ErrorMessage="输入姓名" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td><td class="label" width="40%">&nbsp;</td></tr><tr><td class="label" style="height:50px;">国家:<br /><asp:TextBox ID="txtCountry" runat="server" Text='<%# Bind("country") %>' CssClass="checkoutTextbox" MaxLength="80" Width="155px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valCountry" runat="server" ControlToValidate="txtCountry" ErrorMessage="输入国家" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td><td class="label">省:<br /><asp:TextBox ID="txtProvince" runat="server" Text='<%# Bind("province") %>' CssClass="checkoutTextbox" MaxLength="80" Width="155px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valProvince" runat="server" ControlToValidate="txtProvince" ErrorMessage="输入省份" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td></tr><tr><td class="label" style="height:50px;">城市:<br /><asp:TextBox ID="txtCity" runat="server" Text='<%# Bind("city") %>' CssClass="checkoutTextbox" MaxLength="80" Width="155px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valCity" runat="server" ControlToValidate="txtCity" ErrorMessage="输入城市" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td><td class="label" style="height:50px;">邮编:<br /><asp:TextBox ID="txtZipcode" runat="server" Text='<%# Bind("zip_code") %>' CssClass="checkoutTextbox" MaxLength="80" Width="80px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valZipcode" runat="server" ControlToValidate="txtZipcode" ErrorMessage="输入邮编" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td></tr><tr><td class="label" colspan="2" style="height:50px;">地址:<br /><asp:TextBox ID="txtAddress" runat="server" Text='<%# Bind("address") %>' CssClass="checkoutTextbox" MaxLength="80" Width="330px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valAddress" runat="server" ControlToValidate="txtAddress" ErrorMessage="输入地址" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td></tr><tr><td class="label" colspan="2" style="height:50px;">电话:<br /><asp:TextBox ID="txtPhone" runat="server" Text='<%# Bind("phone") %>' CssClass="checkoutTextbox" MaxLength="80" Width="155px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valPhone" runat="server" ControlToValidate="txtPhone" ErrorMessage="输入电话" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator></td></tr><tr><td class="label" colspan="2" style="height:70px;" valign="top">电子邮箱:<br /><asp:TextBox ID="txtEmail" runat="server" Text='<%# Bind("email") %>' CssClass="checkoutTextbox" MaxLength="80" Width="330px"></asp:TextBox><br /><asp:RequiredFieldValidator ID="valEmail" runat="server" ControlToValidate="txtEmail" ErrorMessage="输入电子邮件" Display="Dynamic" Font-Size="Small" ForeColor="Red"></asp:RequiredFieldValidator><asp:RegularExpressionValidator ID="valEmail1" ControlToValidate="txtEmail" runat="server" ErrorMessage="无效的Email地址" Display="Dynamic" Font-Size="Small" ForeColor="Red" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator></td></tr></table><div class="checkoutButtonBg"><!--提交更新的命令按钮--><asp:LinkButton ID="btnSubmit" runat="server" CausesValidation="true" CommandName="Update" CssClass="submit" Text="更新"></asp:LinkButton></div></EditItemTemplate></asp:FormView><asp:SqlDataSource ID="sdsAccount" runat="server" ConnectionString="<%$ ConnectionStrings:cnPetShop %>" SelectCommand="SELECT * FROM [account] WHERE ([user_name] = @user_name)" UpdateCommand="UPDATE [account] SET [cname] = @cname, [country] = @country, [province] = @province, [city] = @city, [address] = @address, [zip_code] = @zip_code, [phone] = @phone, [email] = @email WHERE [user_name] = @user_name" OnSelecting="sdsAccount_Selecting"><SelectParameters><asp:Parameter Name="user_name" Type="String" /></SelectParameters><UpdateParameters><asp:Parameter Name="cname" Type="String" /><asp:Parameter Name="country" Type="String" /><asp:Parameter Name="province" Type="String" /><asp:Parameter Name="city" Type="String" /><asp:Parameter Name="address" Type="String" /><asp:Parameter Name="zip_code" Type="String" /><asp:Parameter Name="phone" Type="String" /><asp:Parameter Name="email" Type="String" /><asp:Parameter Name="user_name" Type="String" /></UpdateParameters></asp:SqlDataSource><!--操作结果信息--><asp:Label ID="lblMessage" runat="server" Text="" CssClass="label"></asp:Label></div>
</asp:Content>

userprofile1.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
/*****************************代码编写:虾米大王
邮箱:modern358@163.com
完成日期:2021年4月10日******************************/
namespace dynamicweb11_1
{public partial class UserProfile1 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (Session["UserName"] != null){lblName.Text = Session["UserName"].ToString();}else{Response.Redirect("~/SignIn1.aspx?from=~/UserProfile1.aspx");}}protected void sdsAccount_Selecting(object sender, SqlDataSourceSelectingEventArgs e){if (Session["UserName"] != null){e.Command.Parameters[0].Value = Session["UserName"].ToString();}else{return;}}protected void fvAccount_ItemUpdated(object sender, FormViewUpdatedEventArgs e){lblMessage.Text = "你的资料已完成更新<br>";}}
}

web.config

<?xml version="1.0" encoding="utf-8"?><!--有关如何配置 ASP.NET 应用程序的详细信息,请访问http://go.microsoft.com/fwlink/?LinkId=169433--><configuration><connectionStrings><add name="cnPetShop" connectionString="Data Source=LAPTOP-AQKEN65V\SQLEXPRESS08;Initial Catalog=netPetShop;Persist Security Info=True;User ID=sa;Password=123456"providerName="System.Data.SqlClient" /></connectionStrings><system.web><compilation debug="true" targetFramework="4.5" /><httpRuntime targetFramework="4.5" /><pages theme="PetShop1"></pages></system.web></configuration>

项目中所用图片

以上是全部代码及部分图片,因为图片太多,完整的项目代码,我会上传至博客资源中。

vs2015 dynamicweb11-1 .NET PET SHOP宠物商店完整项目代码相关推荐

  1. pet store宠物商店数据库设计

    数据库具体的sql查询文件内容如下: create database petstore; use petstore create table Client ( username varchar(25) ...

  2. ASP.NET MVC 音乐商店完整项目示例

    MusicStore 项目的完整配套视频! 这是一个系列文章,原文内容出自微软的 MusicStore. 首先对原文内容进行了简单的翻译,以方便大家参考,另外对于其中的部分内容,也进行了简单的分析,使 ...

  3. ASP.NET---- Microsoft .NET Pet Shop 3.x(-)

    Microsoft .NET Pet Shop 3.x: .NET Pet Shop 的设计模式与体系结构 摘自微软MSDNhttp://www.microsoft.com/china/MSDN/li ...

  4. 【实验室集训大作业】JDBC实现宠物商店

    宠物商店 前言 这次的寒假大作业宠物商店,我是通过Java和MySQL实现的,具体的操作在下文会给出详细说明! 另外,由于Java和MySQL都是寒假刚学的,然后这个项目是边学边做的,所以有些方法在学 ...

  5. [附源码]计算机毕业设计JAVA宠物商店管理系统

    [附源码]计算机毕业设计JAVA宠物商店管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Inte ...

  6. 手把手教创建你的第一个以太智能合约:ETHEREUM PET SHOP(译)

    手把手教创建你的第一个以太智能合约:ETHEREUM PET SHOP(译) 原文地址 : http://truffleframework.com/tutorials/pet-shop 译者:luci ...

  7. 以太坊宠物商店 - 记录第一个Dapp

    背景 记录以前练习的第一个Dapp宠物商店,使用以太坊作为处理宠物收养的方式.该商店在特定时间可容纳16只宠物,并且他们已经拥有宠物数据库.所以我们做一个将以太坊地址与宠物相关联的dapp,官方提供了 ...

  8. ETHEREUM PET SHOP

    ETHEREUM PET SHOP 个人博客:sulenn 本文翻译至:https://truffleframework.com/tutorials/pet-shop 版本为:2017-07-20 本 ...

  9. pet shop 4.0架构信息-转

    Petshop5.0 详解之一(系统架构设计)   前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力.业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun ...

最新文章

  1. Vim对中文编码的支持[转]
  2. 将您的窗口最前端显示
  3. Jsp实现网上彩票销售系统
  4. 网络编程知识预备(1) ——了解OSI网络模型
  5. 【C语言简单说】十七:数组(补)
  6. python 数据库模块
  7. 【华为云技术分享】干货!!卷积神经网络之LeNet-5迁移实践案例
  8. angular模态框位置_angular $modal 模态框
  9. java字符转为数字_java判断字符串是否可以转为数字
  10. 什么是系统架构?系统架构的特点分析!
  11. python读取第一行设为字典_将csv读入字典,第一行成为名称
  12. 新版quartus_prime破解与altera官网下载器件库
  13. scala面向对象总结
  14. 通过HttpURLConnection连接上传文件和参数
  15. qt for s60 资料集
  16. X79主板win10启动卡住问题修复处理
  17. 知物由学 | 易盾SaaS系统资损防控体系建设
  18. Etcd教程 — 第二章 Etcd集群静态发现
  19. 再见!深圳!再见!腾讯!
  20. 计算机工程与设计 北大核心,计算机工程与设计 统计源期刊北大核心期刊

热门文章

  1. 充电送APP?火车站的这种充电桩太可怕了!
  2. 国民MCU 微型打印机解决方案
  3. MATLAB算法实战应用案例精讲-【智能优化算法】 正弦余弦算法(SCA)(附MATLAB和Python代码实现)
  4. c语言 浮点数的加减乘除,浮点数的加减乘除运算步骤
  5. linux shell 数组 遍历
  6. 盗贼生存法则100条
  7. python调用nastran,使用numpy在Python中导入nastran节点卡片组
  8. 诛仙3怎么一直服务器维护,诛仙3游戏老是掉线怎么办_诛仙3游戏掉线解决方法介绍...
  9. WebGL透明度与α融合
  10. 浅析LINQ带给开发者的五个优势