> # ♻️ 资源
> **大小:** 42.6MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010406**](https://www.yuque.com/sxbn/ks/100010406)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87379033**](https://download.csdn.net/download/s1t16/87379033)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# 简单的 MVC 电商网站
## 第一部分简介
主要功能与知识点如下:
分类、产品浏览、购物车、结算、CRUD(增删改查) 管理、发邮件、分页、模型绑定、认证过滤器和单元测试等(预计四篇、周五、下周一和周二)。
## 目录
- 创建项目架构
- 创建域模型实体
- 创建单元测试
- 创建控制器与视图
- 创建分页
- 加入样式
### 一、创建项目架构
1.新建一个解决方案“BooksStore”,并添加以下项目:
![85ef6dfe8bc7240453cf078dee03170d.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711076963720-8e13fe3b-6648-4a1a-8bdb-bab273cd4aa4.png#averageHue=%23cfdfb7&clientId=ud4c80d42-6cfd-4&from=paste&height=158&id=u58de9528&originHeight=198&originWidth=362&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=17105&status=done&style=none&taskId=u86b091ec-6729-4628-8908-0773a276447&title=&width=289.6)
BooksStore.Domain:类库,存放域模型和逻辑,使用 EF;
BooksStore.WebUI:Web MVC 应用程序,存放视图和控制器,充当显示层,使用了 Ninject 作为 DI 容器;
BoosStore.UnitTest:单元测试,对上述两个项目进行测试。
Web MVC 为一个空的 MVC 项目:
![2a21cc202933b3f8321d37d1135fa6e4.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711076982005-9eb5a85e-e3a8-457c-914f-44e6a42cb6fe.png#averageHue=%23f1f0ef&clientId=ud4c80d42-6cfd-4&from=paste&height=482&id=ucc289dcb&originHeight=603&originWidth=777&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=52023&status=done&style=none&taskId=u633dce1f-f635-4160-8847-53e545ac4f6&title=&width=621.6)
2.添加项目引用(需要使用 NuGet):
![0c60004d091a69eebf16156df8b88f9c.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711077009918-4966f9a5-e030-4e63-83de-f7d8d34a3407.png#averageHue=%23eeebe9&clientId=ud4c80d42-6cfd-4&from=paste&height=588&id=u7dfdeadd&originHeight=735&originWidth=341&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=34187&status=done&style=none&taskId=u093a67a4-3770-4a6e-a4ff-00b9274c3f3&title=&width=272.8)![521d8a00c629be2e6fe7a6384c7b8473.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711077009965-343aa7e2-b80a-4cc5-8f36-ab06611a59c4.png#averageHue=%23efeceb&clientId=ud4c80d42-6cfd-4&from=paste&height=216&id=u63e76569&originHeight=270&originWidth=341&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=13344&status=done&style=none&taskId=ud0d1eeda-7eb9-474b-ba8f-5fb1f1717bb&title=&width=272.8)![de159edb659f055c20558c871ee85b52.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711077009968-9e3f5aa0-068d-449e-a36f-1b6f7155d003.png#averageHue=%23efebea&clientId=ud4c80d42-6cfd-4&from=paste&height=228&id=u5dc541fc&originHeight=285&originWidth=354&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=14948&status=done&style=none&taskId=ue99cb8d8-51c5-4c81-96a3-dfffd9516b5&title=&width=283.2)
这是不同项目需要引用的类库和项目
3.设置 DI 容器
我们通过 Ninject ,创建一个自定义的工厂,一个名为 NinjectControllerFactory 的类继承 DefaultControllerFactory(默认的控制器工厂)。你也可以在里面添加自定义的代码,改变 MVC 框架的默认行为。
![64db23003971ea0220bf5f1369a2e677.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711077026637-01677db5-7ce4-4928-80e6-450b6aea57ee.png#averageHue=%23efebea&clientId=ud4c80d42-6cfd-4&from=paste&height=187&id=u34118805&originHeight=234&originWidth=298&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=12373&status=done&style=none&taskId=u66292f5b-57ef-4160-9c46-4517926d2ae&title=&width=238.4)
AddBindings() 添加绑定方法,先留空。
```csharp
public class NinjectControllerFactory : DefaultControllerFactory
{
private readonly IKernel _kernel;
public NinjectControllerFactory()
{
_kernel = new StandardKernel();
AddBindings();
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null
? null
: (IController) _kernel.Get(controllerType);
}
/// <summary>
/// 添加绑定
/// </summary>
private void AddBindings()
{
}
}
```
4.并且在 Global.asax 中加入一行代码,告诉 MVC 用新建的类来创建控制器对象。
```csharp
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
```
```csharp
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
}
}
```
### 二、创建域模型实体
![3eac59118a8c21bf2b10ebd24bfb9d12.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711077060360-c4cd239c-ce2e-4ad9-9ad8-b9be0d63bd39.png#averageHue=%23eeebea&clientId=ud4c80d42-6cfd-4&from=paste&height=158&id=ua2c93f82&originHeight=197&originWidth=268&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=10132&status=done&style=none&taskId=u606675c6-3f3a-44ce-9b56-4c0e98c0bbb&title=&width=214.4)
1.在图中位置创建一个名为 Book 的实体类。
```csharp
public class Book
{
/// <summary>
/// 标识
/// </summary>
public int Id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 价格
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// 分类
/// </summary>
public string Category { get; set; }
}
```
有了实体之后,我们应该创建一个“库”对该实体进行操作,而这种持久化逻辑操作也应该和域模型是进行隔离的。
2.先定义一个接口 IbookRepository,在根目录创建一个名为 Abstract 的文件夹,顾名思义就是应该放置一些抽象的类,如接口。
![3fd7c1087163cff324ac671f2d49734e.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711077080646-5af30e5e-26e8-4275-9f02-2f8e07c0d9c8.png#averageHue=%23efeeec&clientId=ud4c80d42-6cfd-4&from=paste&height=158&id=u6daa9e67&originHeight=197&originWidth=247&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=9509&status=done&style=none&taskId=ubcf8ca48-dfb1-4614-8b73-106bc55f647&title=&width=197.6)
```csharp
public interface IBookRepository
{
IQueryable<Book> Books { get; }
}
```
我们通过该接口就可以得到对应类的相关信息,而不需要去管该数据如何存储,以及存储的位置,这就是存储库模式的本质。
3.接下来,我们就需要对数据库进行操作了,我们使用简单的 EF(ORM 对象关系模型) 去对数据库进行操作,所以需要自己通过 Nuget 下载 EF 的类库。
![fc11b2b791c0bd9c5584f2324d2d54d5.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1711077097927-a532a689-496d-482e-b15f-a9d680dc5f5a.png#averageHue=%23eeebe9&clientId=ud
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100010406 一个基于 MVC 的简单图书购物商城(使用 VS 2015 + C# 6.0),四个部分分别实现了创建项目架构、创建域模型实体、创建单元测试、创建控制器与视图、创建分页和加入样式、添加到购物车和分类导航、整个购物车的流程,以及订单处理(发邮件进行通知)、登录认证过滤器,加入防 CSRF 攻击。 主要功能与知识点如下:分类、产品浏览、购物车、结算、CRUD(增删改查) 管理、发邮件、分页、模型绑定、认证过滤器和单元测试等(预计四篇、周五、下周一和周二)。
资源推荐
资源详情
资源评论
收起资源包目录
基于ASP.NET+SQL Server简单的 MVC 电商网站【100010406】 (404个子文件)
Global.asax 111B
Wen.BooksStore.UnitTest.csprojResolveAssemblyReference.cache 140KB
Wen.BooksStore.WebUI.csprojResolveAssemblyReference.cache 115KB
Wen.BooksStore.Domain.csprojResolveAssemblyReference.cache 44KB
DesignTimeResolveAssemblyReferencesInput.cache 16KB
DesignTimeResolveAssemblyReferencesInput.cache 7KB
DesignTimeResolveAssemblyReferencesInput.cache 7KB
applicationhost.config 83KB
ApplicationInsights.config 6KB
ApplicationInsights.config 6KB
ApplicationInsights.config 6KB
Wen.BooksStore.WebUI.dll.config 3KB
Web.config 3KB
packages.config 2KB
web.config 2KB
app.config 2KB
Wen.BooksStore.UnitTest.dll.config 2KB
Web.Release.config 1KB
Web.Debug.config 1KB
App.config 894B
Wen.BooksStore.Domain.dll.config 894B
VBCSCompiler.exe.config 549B
VBCSCompiler.exe.config 549B
VBCSCompiler.exe.config 549B
packages.config 210B
packages.config 140B
CartController.cs 4KB
EmailOrderProcessor.cs 3KB
AdminController.cs 2KB
Cart.cs 2KB
EfBookRepository.cs 2KB
BookController.cs 1KB
AssemblyInfo.cs 1KB
AssemblyInfo.cs 1KB
AccountController.cs 1KB
AssemblyInfo.cs 1KB
PagingHelper.cs 1KB
NinjectControllerFactory.cs 1KB
Book.cs 1KB
UnitTest1.cs 1KB
RouteConfig.cs 1014B
FormsAuthProvider.cs 883B
IBookRepository.cs 773B
Contact.cs 733B
NavController.cs 719B
PagingInfo.cs 709B
Global.asax.cs 552B
AccountViewModels.cs 527B
IOrderProcessor.cs 518B
BookDetailsViewModels.cs 478B
CartItem.cs 468B
IAuthProvider.cs 463B
EfDbContext.cs 329B
CartViewModels.cs 302B
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs 0B
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs 0B
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs 0B
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs 0B
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs 0B
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs 0B
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs 0B
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs 0B
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs 0B
Login.cshtml 4KB
Index.cshtml 1KB
Index.cshtml 1KB
Edit.cshtml 1KB
_Layout.cshtml 663B
_AdminLayout.cshtml 444B
_BookSummary.cshtml 428B
Checkout.cshtml 405B
Sidebar.cshtml 342B
Details.cshtml 321B
Summary.cshtml 248B
_ViewStart.cshtml 53B
Thanks.cshtml 10B
Wen.BooksStore.WebUI.csproj 14KB
Wen.BooksStore.UnitTest.csproj 6KB
Wen.BooksStore.Domain.csproj 4KB
htmleaf-demo.css 6KB
normalize.css 2KB
Site.css 2KB
Site.css 891B
EntityFramework.dll 4.96MB
EntityFramework.dll 4.96MB
EntityFramework.dll 4.96MB
EntityFramework.dll 4.96MB
EntityFramework.dll 4.75MB
Microsoft.CodeAnalysis.VisualBasic.dll 4.67MB
Microsoft.CodeAnalysis.VisualBasic.dll 4.67MB
Microsoft.CodeAnalysis.VisualBasic.dll 4.67MB
Microsoft.CodeAnalysis.CSharp.dll 3.82MB
Microsoft.CodeAnalysis.CSharp.dll 3.82MB
Microsoft.CodeAnalysis.CSharp.dll 3.82MB
Microsoft.AI.Agent.Intercept.dll 1.89MB
Microsoft.AI.Agent.Intercept.dll 1.89MB
Microsoft.AI.Agent.Intercept.dll 1.89MB
Microsoft.CodeAnalysis.dll 1.64MB
Microsoft.CodeAnalysis.dll 1.64MB
Microsoft.CodeAnalysis.dll 1.64MB
共 404 条
- 1
- 2
- 3
- 4
- 5
资源评论
神仙别闹
- 粉丝: 3797
- 资源: 7471
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功