首页 > 图书中心 > ASP.NET Core 3高级编程(第8版)

目录

目    录

第I部分  介绍ASP.NET Core

第1章  ASP.NET Core上下文   3

1.1  了解ASP.NET Core   3

1.1.1  理解应用程序框架   3

1.1.2  理解实用程序框架   5

1.1.3  了解ASP.NET Core平台   5

1.2  理解本书   5

1.2.1  需要什么软件来完成示例?   6

1.2.2  需要什么平台来完成示例?   6

1.2.3  源代码下载   6

1.2.4  如果在执行这些示例时遇到问题,怎么办?   6

1.2.5  如果发现书中有错误,怎么办?   6

1.2.6  本书包含的内容   6

1.2.7  本书未包含的内容   7

1.2.8  如何联系作者?   7

1.2.9  如果你真的喜欢本书?   8

1.2.10  如果本书让人生气,想要抱怨该怎么办?   8

1.3  小结   8

第2章  入门   9

2.1  选择代码编辑器   9

2.1.1  安装Visual Studio   10

2.1.2  安装Visual Studio Code   12

2.2  创建ASP.NET Core项目   16

2.2.1  用Visual Studio打开项目   16

2.2.2  用Visual Studio Code打开项目   17

2.3  运行ASP.NET Core应用程序   18

2.3.1  理解端点   20

2.3.2  了解路由   21

2.3.3  理解HTML渲染   22

2.3.4  内容综述   26

2.4  小结   26

第3章  第一个ASP.NET Core应用程序   27

3.1  设置场景   27

3.2  创建项目   27

3.2.1  添加数据模型   29

3.2.2  创建第二个操作和视图   29

3.2.3  连接操作方法   31

3.2.4  构建表单   32

3.2.5  接收表单数据   34

3.2.6  添加Thanks视图   36

3.2.7  显示响应   37

3.2.8  添加验证   39

3.2.9  内容的样式化   44

3.3  小结   49

第4章  使用开发工具   51

4.1  创建ASP.NET Core项目   51

4.1.1  使用命令行创建项目   52

4.1.2  使用Visual Studio创建项目   54

4.2  向项目中添加代码和内容   57

4.3  构建和运行项目   59

4.3.1  使用命令行构建和运行项目   60

4.3.2  使用Visual Studio Code构建和运行项目   60

4.3.3  使用Visual Studio构建和运行项目   60

4.4  管理包   61

4.4.1管理NuGet包   61

4.4.2  管理工具包   62

4.4.3  管理客户端包   63

4.4.4  使用Visual Studio管理包   64

4.4.5  使用Visual Studio管理客户端包   65

4.5  调试项目   65

4.6  小结   66

第5章  C#的基本特点   67

5.1  准备工作   67

5.1.1  打开项目   68

5.1.2  启用MVC框架   68

5.1.3  创建应用程序组件   69

5.1.4  选择HTTP端口   70

5.1.5  运行示例应用程序   71

5.2  使用null条件运算符   71

5.2.1  链接null条件运算符   72

5.2.2  结合条件运算符和合并运算符   74

5.3  使用自动实现的属性   76

5.3.1  使用自动实现的属性初始化器   77

5.3.2  创建自动实现的只读属性   77

5.4  使用字符串插值   79

5.5  使用对象和集合初始化器   80

5.6  模式匹配   82

5.7  使用扩展方法   84

5.7.1  将扩展方法应用到接口   86

5.7.2  创建过滤扩展方法   88

5.8  使用lambda表达式   89

5.8.1  定义函数   91

5.8.2  使用lambda表达式方法和属性   94

5.9  使用类型推断和匿名类型   96

5.10  在接口中使用默认实现   98

5.11  使用异步方法   101

5.11.1  直接处理任务   101

5.11.2  应用async和await关键字   102

5.11.3  使用异步枚举   104

5.12  获取名称   107

5.13  小结   109

第6章  测试ASP.NET Core应用程序   111

6.1  准备工作   112

6.1.1  打开项目   112

6.1.2  选择HTTP端口   112

6.1.3  启用MVC框架   113

6.1.4 创建应用程序组件   113

6.1.5  运行示例应用程序   115

6.2  创建单元测试项目   115

6.3  编写和运行单元测试   116

6.3.1  使用Visual Studio Test Explorer运行测试   118

6.3.2  使用Visual Studio Code运行测试   119

6.3.3  从命令行运行测试   119

6.3.4  纠正单元测试   120

6.3.5  为单元测试隔离组件   121

6.3.6  使用模拟包   126

6.3.7  创建模拟对象   126

6.4  小结   128

第7章  SportsStore:一个真正的应用程序   129

7.1  创建项目   130

7.1.1  创建单元测试项目   130

7.1.2  创建应用程序项目文件夹   130

7.1.3  打开项目   131

7.1.4  准备应用程序服务和请求管道   132

7.1.5  配置Razor视图引擎   133

7.1.6  创建控制器和视图   134

7.1.7  启动数据模型   135

7.1.8  检查和运行应用程序   135

7.2  向应用程序添加数据   136

7.2.1  安装Entity Framework Core包   136

7.2.2  定义连接字符串   136

7.2.3  创建数据库上下文类   137

7.2.4  配置Entity Framework Core   138

7.2.5  创建存储库   139

7.2.6  创建数据库迁移   141

7.2.7  创建种子数据   142

7.3  显示产品列表   145

7.3.1  准备控制器   145

7.3.2  更新视图   147

7.3.3  运行应用程序   148

7.4  添加分页   148

7.4.1  显示页面的链接   150

7.4.2  改善URL   158

7.5  内容的样式化   160

7.5.1  安装Bootstrap包   161

7.5.2  应用Bootstrap风格   161

7.5.3  创建部分视图   164

7.6  小结   165

第8章  SportsStore:导航和购物车   167

8.1  添加导航控件   167

8.1.1  筛选产品列表   167

8.1.2  优化URL方案   172

8.1.3  构建一个类别导航菜单   176

8.1.4  更正页数   183

8.2  构建购物车   186

8.2.1  配置Razor Pages   186

8.2.2  创建Razor Pages   189

8.2.3  创建Add To Cart按钮   189

8.2.4  启用会话   191

8.2.5  实现购物车功能   193

8.3  小结   203

第9章  SportsStore:完成购物车   205

9.1  使用服务改进Cart模型   205

9.1.1  创建支持存储的Cart类   205

9.1.2  注册服务   207

9.1.3  简化购物车Razor Pages   209

9.2  完成购物车的功能   211

9.2.1  从购物车中删除商品   211

9.2.2  添加购物车摘要小部件   214

9.3  提交订单   217

9.3.1  创建模型类   217

9.3.2  添加付款过程   218

9.3.3  创建控制器和视图   218

9.3.4  实现订单处理   221

9.3.5  完成订单控制器   224

9.3.6  显示验证错误   227

9.3.7  显示摘要页面   229

9.4  小结   230

第10章  SportsStore:管理   231

10.1  准备Blazor服务器   231

10.1.1  创建导入文件   233

10.1.2  创建Startup Razor Pages   233

10.1.3  创建路由和布局组件   234

10.1.4  创建Razor组件   235

10.1.5  检查Blazor的设置   235

10.2  管理订单   236

10.2.1  增强模型   236

10.2.2  向管理员显示订单   238

10.3  添加目录管理   241

10.3.1  扩展存储库   241

10.3.2  将验证属性应用到数据模型   242

10.3.3  创建列表组件   243

10.3.4  创建细节组件   245

10.3.5  创建编辑器组件   246

10.3.6  删除产品   249

10.4  小结   251

第11章  SportsStore:安全与部署   253

11.1  确保管理功能的安全   253

11.1.1  创建身份数据库   253

11.1.2  添加常规的管理特性   259

11.1.3  应用基本授权策略   260

11.1.4  创建账户控制器和视图   262

11.1.5  测试安全策略   266

11.2  准备进行部署   266

11.2.1  配置错误的处理   266

11.2.2  创建生产配置设置   268

11.2.3  创建Docker映像   268

11.2.4  运行容器化应用程序   271

11.3  小结   272

第II部分  ASP.NET Core平台

第12章  了解ASP.NET Core平台   275

12.1  准备工作   276

12.2  了解ASP.NET Core平台   277

12.2.1  理解中间件和请求管道   277

12.2.2  了解服务   277

12.3  了解ASP.NET Core项目   278

12.3.1  理解入口点   279

12.3.2  理解Startup类   280

12.3.3  理解项目文件   281

12.4  创建自定义中间件   283

12.4.1  使用类定义中间件   286

12.4.2  理解返回管道路径   289

12.4.3  请求管道短路   290

12.4.4  创建管道分支   292

12.4.5  创建终端中间件   294

12.5  配置中间件   297

12.6  小结   301

第13章  使用URL路由   303

13.1  准备工作   304

13.1.1  理解URL路由   307

13.1.2  添加路由中间件、定义端点   307

13.1.3  理解URL模式   310

13.1.4  在URL模式中使用段变量   311

13.1.5  从路由中生成URL   315

13.2  管理URL的匹配   319

13.2.1  从一个URL段匹配多个值   319

13.2.2  为段变量使用默认值   320

13.2.3  在URL模式中使用可选段   321

13.2.4  使用catchall段变量   323

13.2.5  约束段的匹配   324

13.2.6  定义回退路由   327

13.3  高级路由功能   328

13.3.1  创建自定义约束   328

13.3.2  避免模棱两可的路由异常   330

13.3.3  访问中间件组件中的端点   332

13.4  小结   334

第14章  使用依赖注入   335

14.1  为本章做准备   336

14.1.1  创建中间件组件和端点   337

14.1.2  配置请求管道   338

14.2  理解服务位置和紧密耦合   339

14.2.1  理解服务位置问题   340

14.2.2  理解紧密耦合组件的问题   342

14.3  使用依赖注入   344

14.3.1  在中间件类中使用服务   346

14.3.2  在端点中使用服务   347

14.4  使用服务生命周期   352

14.4.1  创建临时服务   353

14.4.2  避免临时服务重用陷阱   354

14.4.3  使用有作用域的服务   357

14.5  其他依赖注入特性   363

14.5.1  创建依赖关系链   363

14.5.2  访问ConfigureServices方法中的服务   365

14.5.3  使用服务工厂函数   366

14.5.4  创建具有多个实现的服务   367

14.5.5  在服务中使用未绑定类型   370

14.6  小结   372

第15章  使用平台特性(第1部分)   373

15.1  准备工作   374

15.2  使用配置服务   375

15.2.1  理解特定于环境的配置文件   376

15.2.2  访问配置设置   377

15.2.3  在服务中使用配置数据   378

15.2.4  理解启动设置文件   381

15.2.5  确定启动类中的环境   387

15.2.6  存储用户的秘密   388

15.3  使用日志服务   392

15.3.1  生成日志消息   392

15.3.2  配置最小日志级别   395

15.4  使用静态内容和客户端包   397

15.4.1  添加静态内容中间件   397

15.4.2  使用客户端包   401

15.5  小结   404

第16章  使用平台特性(第2部分)   405

16.1  准备工作   405

16.2  使用cookie   406

16.2.1  启用cookie consent检查   409

16.2.2  管理cookie consent   411

16.3  使用会话   413

16.3.1  配置会话服务和中间件   413

16.3.2  使用会话数据   415

16.4  使用HTTPS连接   417

16.4.1  启用HTTP连接   417

16.4.2  检测HTTPS请求   419

16.4.3  执行HTTPS请求   420

16.4.4  启用HTTP严格传输安全性   422

16.5  处理异常和错误   425

16.5.1  返回HTML错误响应   427

16.5.2  富集状态码响应   429

16.6  使用Host头过滤请求   431

16.7  小结   433

第17章  处理数据   435

17.1  准备工作   436

17.2  缓存数据   438

17.2.1  缓存数据值   440

17.2.2  使用共享和持久的数据缓存   443

17.3  缓存响应   447

17.4  使用Entity Framework Core   449

17.4.1  安装Entity Framework Core   450

17.4.2  创建数据模型   451

17.4.3  配置数据库服务   452

17.4.4  创建和应用数据库迁移   453

17.4.5  播种数据库   454

17.4.6  在端点中使用数据   457

17.5  小结   460

第III部分  ASP.NET Core应用程序

第18章  创建示例项目   463

18.1  创建项目   463

18.2  添加数据模型   464

18.2.1  向项目中添加NuGet包   464

18.2.2  创建数据模型   464

18.2.3  准备种子数据   466

18.2.4  配置Entity Framework Core服务和中间件   467

18.2.5  创建和应用迁移   469

18.3  添加CSS框架   469

18.4  配置请求管道   470

18.5  运行示例应用程序   472

18.6  小结   472

第19章  创建RESTful Web服务   473

19.1  准备工作   474

19.2  理解RESTful Web服务   474

19.2.1  理解请求URL和方法   474

19.2.2  理解JSON   475

19.3  使用自定义端点创建Web服务   475

19.4  使用控制器创建Web服务   478

19.4.1  启用MVC框架   479

19.4.2  创建控制器   480

19.5  改进Web服务   489

19.5.1  使用异步操作   490

19.5.2  防止过度绑定   491

19.5.3  使用操作的结果   493

19.5.4  验证数据   499

19.5.5  应用API控制器属性   501

19.5.6  忽略Null属性   502

19.6  小结   505

第20章  高级Web服务特性   507

20.1  准备工作   507

20.1.1  删除数据库   508

20.1.2  运行示例应用程序   508

20.2  处理相关数据   509

20.3  支持HTTP Patch方法   512

20.3.1  理解JSON Patch   512

20.3.2  安装和配置JSON Patch包   513

20.3.3  定义操作方法   514

20.4  理解内容的格式化   515

20.4.1  理解默认的内容策略   515

20.4.2  理解内容协商   517

20.4.3  指定操作结果格式   521

20.4.4  在URL中请求格式   522

20.4.5  限制操作方法接收的格式   524

20.5  记录和探索Web服务   525

20.5.1  解决操作冲突   526

20.5.2  安装和配置Swashbuckle包   527

20.5.3  微调API描述   529

20.6  小结   533

第21章  使用控制器和视图

           (第1部分)   535

21.1  准备工作   536

21.1.1  删除数据库   537

21.1.2  运行示例应用程序   537

21.2  开始使用视图   538

21.2.1  配置应用程序   538

21.2.2  创建HTML控制器   539

21.2.3  创建Razor视图   542

21.2.4  通过名称选择视图   544

21.3  使用Razor视图   548

21.4  理解Razor语法   556

21.4.1  理解指令   556

21.4.2  理解内容表达式   557

21.4.3  设置元素内容   557

21.4.4  设置特性值   558

21.4.5  使用条件表达式   559

21.4.6  枚举序列   563

21.4.7  使用Razor代码块   565

21.5  小结   566

第22章  使用控制器和视图(第2部分)   567

22.1  准备工作   567

22.1.1  删除数据库   569

22.1.2  运行示例应用程序   569

22.2  使用ViewBag   570

22.3  使用临时数据   572

22.4  使用布局   574

22.4.1  使用ViewBag配置布局   576

22.4.2  使用ViewStart文件   578

22.4.3  覆盖默认布局   579

22.4.4  使用布局节   583

22.5  使用分部视图   590

22.5.1  启用分部视图   590

22.5.2  创建分部视图   590

22.5.3  应用分部视图   591

22.6  理解内容编码   594

22.6.1  理解HTML编码   594

22.6.2  理解JSON编码   596

22.7  小结   597

第23章  使用Razor Pages   599

23.1  准备工作   600

23.2  理解Razor Pages   601

23.2.1  配置Razor Pages   601

23.2.2  创建Razor Pages   603

23.3  理解Razor Pages的路由   607

23.3.1  在Razor Pages中指定路由模式   609

23.3.2  为Razor Pages添加路由   610

23.4  理解页面模型类   612

23.4.1  使用代码隐藏类文件   613

23.4.2  理解Razor Pages的操作结果   615

23.4.3  处理多个HTTP方法   619

23.4.4  选择处理程序方法   621

23.5  理解Razor Pages视图   623

23.5.1  为Razor Pages创建布局   623

23.5.2  在Razor Pages中使用分部视图   625

23.5.3  创建没有页面模型的Razor Pages   627

23.6  小结   628

第24章  使用视图组件   629

24.1  准备工作   629

24.1.1  删除数据库   632

24.1.2  运行示例应用程序   632

24.2  理解视图组件   633

24.3  创建和使用视图组件   633

24.4  理解视图组件的结果   637

24.4.1  返回一个分部视图   638

24.4.2  返回HTML片段   641

24.5  获取上下文数据   643

24.5.1  使用实参提供父视图的上下文   645

24.5.2  创建异步视图组件   648

24.6  创建视图组件类   649

24.7  小结   655

第25章  使用标签助手   657

25.1  准备工作   658

25.1.1  删除数据库   660

25.1.2  运行示例应用程序   660

25.2  创建标签助手   660

25.2.1  定义标签助手类   661

25.2.2  注册标签助手   663

25.2.3  使用标签助手   664

25.2.4  缩小标签助手的范围   665

25.2.5  扩展标签助手的范围   666

25.3  高级标签助手功能   668

25.3.1  创建快捷元素   668

25.3.2  以编程方式创建元素   671

25.3.3  追加、附加内容和元素   672

25.3.4  获取视图上下文数据   675

25.3.5  使用模型表达式   678

25.3.6  标签助手之间的协调   682

25.3.7  抑制输出元素   684

25.4  使用标签助手组件   686

25.4.1  创建标签助手组件   686

25.4.2  展开标签助手的元素选择   688

25.5  小结   690

第26章  使用内置的标签助手   691

26.1  准备工作   691

26.1.1  添加图像文件   693

26.1.2  安装客户端包   694

26.1.3  删除数据库   694

26.1.4  运行示例应用程序   694

26.2  启用内置的标签助手   695

26.3  改变锚元素   695

26.4  使用JavaScript和CSS标签助手   699

26.4.1  管理JavaScript文件   699

26.4.2  管理CSS样式表   706

26.5  处理图像元素   709

26.6  使用数据缓存   710

26.6.1  设置缓存到期时间   712

26.6.2  设置固定的过期点   713

26.6.3  设置最后使用的有效期   713

26.6.4  使用缓存的变化   714

26.7  使用宿主环境标签助手   715

26.8  小结   716

第27章  使用表单标签助手   717

27.1  准备工作   717

27.1.1  删除数据库   719

27.1.2  运行示例应用程序   719

27.2  理解表单处理模式   720

27.2.1  创建控制器来处理表单   721

27.2.2  创建Razor Pages来处理表单   723

27.3  使用标签助手改进HTML表单   725

27.3.1  使用表单元素   725

27.3.2  改变表单按钮   727

27.4  处理input元素   728

27.4.1  转换input元素的类型属性   730

27.4.2  格式化input元素值   732

27.4.3  在input元素中显示相关数据的值   735

27.5  使用label元素   739

27.6  使用select和option元素   741

27.7  处理文本区域   745

27.8  使用防伪功能   746

27.8.1  在控制器中启用防伪功能   747

27.8.2  在Razor Pages中启用防伪功能   749

27.8.3  使用JavaScript客户端防伪令牌   750

27.9  小结   753

第28章  使用模型绑定   755

28.1  准备工作   756

28.1.1  删除数据库   757

28.1.2  运行示例应用程序   757

28.2  理解模型绑定   757

28.3  绑定简单数据类型   759

28.3.1  绑定Razor Pages中的简单数据类型   760

28.3.2  理解默认绑定值   762

28.4  绑定复杂类型   764

28.4.1  绑定到属性   766

28.4.2  绑定嵌套的复杂类型   768

28.4.3  选择性的绑定属性   772

28.5  绑定到数组和集合   775

28.5.1  绑定到数组   775

28.5.2  绑定到简单集合   778

28.5.3  绑定到字典   780

28.5.4  绑定到复杂类型的集合   781

28.6  指定模型绑定源   784

28.6.1  选择属性的绑定源   786

28.6.2  使用标头进行模型绑定   787

28.6.3  使用请求体作为绑定源   788

28.7  手动模式绑定   789

28.8  小结   791

第29章  使用模型验证   793

29.1  准备工作   794

29.2  删除数据库   795

29.3  运行示例应用程序   795

29.4  理解对模型验证的需要   796

29.5  显式验证控制器中的数据   796

29.5.1  向用户显示验证错误   799

29.5.2  显示验证消息   802

29.5.3  显示属性级的验证消息   806

29.5.4  显示模型级消息   807

29.6  显式验证Razor Pages中的数据   810

29.7  使用元数据指定验证规则   813

29.8  执行客户端验证   821

29.9  执行远程验证   823

29.10  小结   828

第30章  使用过滤器   829

30.1  准备工作   829

30.1.1  启用HTTPS连接   831

30.1.2  删除数据库   832

30.1.3  运行示例应用程序   833

30.2  使用过滤器   833

30.3  理解过滤器   838

30.4  创建自定义过滤器   839

30.4.1  理解授权过滤器   840

30.4.2  理解资源过滤器   842

30.4.3  理解操作过滤器   846

30.4.4  理解页面过滤器   850

30.4.5  理解结果过滤器   855

30.4.6  理解异常过滤器   859

30.4.7  创建异常过滤器   860

30.5  管理过滤器生命周期   863

30.5.1  创建过滤器工厂   865

30.5.2  使用依赖注入范围来管理

过滤器的生命周期   866

30.6  创建全局过滤器   868

30.7  理解和改变过滤器的顺序   870

30.8  小结   874

第31章  创建表单应用程序   875

31.1  准备工作   875

31.1.1  删除数据库   878

31.1.2  运行示例应用程序   878

31.2  创建MVC表单应用程序   879

31.2.1  准备视图模型和视图   879

31.2.2  读取数据   881

31.2.3  创建数据   883

31.2.4  编辑数据   887

31.2.5  删除数据   890

31.3  创建Razor Pages表单应用程序   892

31.3.1  创建常用功能   893

31.3.2  为CRUD操作定义页面   896

31.4  创建新的相关数据对象   899

31.4.1  在同一请求中提供相关数据   900

31.4.2  创建新数据   903

31.5  小结   908

第IV部分  高级ASP.NET Core功能

第32章  创建示例项目   911

32.1  创建项目   911

32.2  添加数据模型   912

32.2.1  准备种子数据   914

32.2.2  配置Entity Framework Core

服务和中间件   916

32.2.3  创建和应用迁移   917

32.3  添加引导CSS框架   918

32.4  配置服务和中间件   918

32.5  创建控制器和视图   919

32.6  创建Razor Pages   922

32.7  运行示例应用程序   924

32.8  小结   925

第33章  使用Blazor服务器

   (第1部分)   927

33.1  准备工作   928

33.2  理解Blazor服务器   928

33.2.1  理解Blazor服务器的优势   929

33.2.2  理解Blazor服务器的缺点   930

33.2.3  在Blazor服务器和Angular/React/Vue.js之间选择   930

33.3  从Blazor开始   930

33.3.1  为Blazor服务器配置ASP.NET Core   930

33.3.2  创建Blazor组件   933

33.4  理解Razor组件的基本特性   938

33.4.1  理解Blazor事件和数据绑定   938

33.4.2  使用数据绑定   946

33.5  使用类文件定义组件   951

33.5.1  使用代码隐藏类   951

33.5.2  定义Razor组件类   953

33.6  小结   954

第34章  使用Blazor服务器

(第2部分)   955

34.1  准备工作   955

34.2  结合组件   956

34.2.1  利用属性配置组件   958

34.2.2  创建自定义事件和绑定   963

34.3  在组件中显示子内容   968

34.3.1  创建模板组件   970

34.3.2  在模板组件中使用泛型类型参数   972

34.3.3  级联参数   978

34.4  处理错误   981

34.4.1  处理连接错误   981

34.4.2  处理未捕获的应用程序错误   984

34.5  小结   986

第35章  高级Blazor特性   987

35.1  准备工作   988

35.2  使用组件的路由   988

35.2.1  准备Blazor页   989

35.2.2  向组件添加路由   990

35.2.3  在路由组件之间导航   993

35.2.4  接收路由数据   996

35.2.5  使用布局定义公共内容   998

35.3  理解组件生命周期方法   1000

35.4  管理组件的交互   1005

35.4.1  使用子组件的引用   1005

35.4.2  与来自其他代码的组件交互   1008

35.4.3  使用JavaScript与组件交互   1012

35.5  小结   1022

第36章  Blazor表单和数据   1023

36.1  准备工作   1023

36.2  使用Blazor表单组件   1027

36.2.1  创建自定义表单组件   1029

36.2.2  验证表单数据   1033

36.2.3  处理表单事件   1036

36.3  使用Entity Framework Core与Blazor   1038

36.3.1  理解Entity Framework Core上下文范围问题   1039

36.3.2  理解重复查询问题   1043

36.4  执行创建、读取、更新和删除操作   1049

36.4.1  创建List组件   1049

36.4.2  创建Details组件   1050

36.4.3  创建Editor组件   1052

36.5  扩展Blazor表单特性   1054

36.5.1  创建自定义验证约束   1055

36.5.2  创建只验证提交按钮组件   1058

36.6  小结   1060

第37章  使用Blazor WebAssembly   1061

37.1  准备工作   1062

37.2  设置Blazor WebAssembly   1064

37.2.1  创建共享项目   1064

37.2.2  创建Blazor WebAssembly项目   1065

37.2.3  准备ASP.NET Core项目   1065

37.2.4  添加解决方案引用   1066

37.2.5  打开项目   1066

37.2.6  完成Blazor WebAssembly配置   1067

37.2.7  测试占位符组件   1069

37.3  创建Blazor WebAssembly组件   1070

37.3.1  导入数据模型名称空间   1070

37.3.2  创建组件   1070

37.3.3  创建布局   1074

37.3.4  定义CSS样式   1075

37.4  完成Blazor WebAssembly表单应用程序   1076

37.4.1  创建Details组件   1076

37.4.2  创建Editor组件   1077

37.5  小结   1080

第38章  使用ASP.NET Core Identity   1081

38.1  准备工作   1082

38.2  为ASP.NET Core Identity准备项目   1083

38.2.1  准备ASP.NET Core Identity数据库   1083

38.2.2  配置数据库连接字符串   1083

38.2.3  配置应用程序   1084

38.2.4  创建和应用身份数据库迁移   1086

38.3  创建用户管理工具   1086

38.3.1  准备用户管理工具   1087

38.3.2  枚举用户账户   1088

38.3.3  创建用户   1090

38.3.4  编辑用户   1097

38.3.5  删除用户   1099

38.4  创建角色管理工具   1100

38.4.1  为角色管理工具做准备   1101

38.4.2  枚举和删除角色   1102

38.4.3  创建角色   1103

38.4.4  分配角色从属关系   1104

38.5  小结   1107

第39章  应用ASP.NET Core Identity   1109

39.1  验证用户的身份   1111

39.1.1  创建登录特性   1111

39.1.2  检查ASP.NET Core Identity cookie   1113

39.1.3  创建退出页面   1114

39.1.4  测试身份验证特性   1115

39.1.5  启用身份验证中间件   1116

39.2  对授权端点的访问   1118

39.2.1  应用授权属性   1118

39.2.2  启用授权中间件   1119

39.2.3  创建被拒绝访问的端点   1120

39.2.4  创建种子数据   1120

39.2.5  测试身份验证序列   1123

39.3  授权访问Blazor应用程序   1124

39.3.1  在Blazor组件中执行授权   1125

39.3.2  向授权用户显示内容   1127

39.4  对Web服务进行身份验证和授权   1129

39.4.1  构建简单的JavaScript客户端   1132

39.4.2  限制对Web服务的访问   1134

39.4.3  使用cookie验证   1135

39.4.4  使用令牌认证   1138

39.4.5  创建令牌   1139

39.4.6  用令牌验证   1141

39.4.7  使用令牌限制访问   1144

39.4.8  使用令牌请求数据   1145

39.5  小结   1147

版权所有(C)2023 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802042911号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘