ASP.NET Core 3高级编程(第8版)

ASP.NET Core 3高级编程(第8版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
2021-07
版次: 1
ISBN: 9787302582717
定价: 268.00
装帧: 其他
开本: 16开
纸张: 胶版纸
11人买过
  • 本书内容
      ● 介绍ASP.NET Core技能集,为你使用整个ASP.NET Core平台打下坚实基础
      ● 在开发环境中应用ASP.NET Core 3功能,介绍丰富的可重用模板
      ● 查看如何创建RESTful Web服务、Web应用程序和客户端应用程序
      ● 运用现有知识高效地启动和运行新的编程模型 Adam Freeman是一位经验丰富的IT专业人士,曾在多家公司担任高级职位,后担任一家全球银行的首席技术官和首席运营官。现在退休了,他把时间花在写作和长跑上。 第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

    第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
  • 内容简介:
    本书内容
      ● 介绍ASP.NET Core技能集,为你使用整个ASP.NET Core平台打下坚实基础
      ● 在开发环境中应用ASP.NET Core 3功能,介绍丰富的可重用模板
      ● 查看如何创建RESTful Web服务、Web应用程序和客户端应用程序
      ● 运用现有知识高效地启动和运行新的编程模型
  • 作者简介:
    Adam Freeman是一位经验丰富的IT专业人士,曾在多家公司担任高级职位,后担任一家全球银行的首席技术官和首席运营官。现在退休了,他把时间花在写作和长跑上。
  • 目录:
    第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

    第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
查看详情
12
相关图书 / 更多
ASP.NET Core 3高级编程(第8版)
ASP.NET程序设计
张铁红
ASP.NET Core 3高级编程(第8版)
ASP.NET动态网站项目开发实用教程(C#版)(微课版)
陈凤 张治军 谭恒松 胡游龙
ASP.NET Core 3高级编程(第8版)
ASIC物理设计要点
[美]霍斯鲁·戈尔山 著;崔志颖 译
ASP.NET Core 3高级编程(第8版)
ASP.NET实践教程(第3版)(微课版)
魏菊霞;李志中;李晶;谢云
ASP.NET Core 3高级编程(第8版)
AS- Helix : 人工智能时代艺术与科学融合——第五届艺术与科学国际作品展暨学术研讨会主旨报告文集
鲁晓波 主编;赵超 副主编
ASP.NET Core 3高级编程(第8版)
ASP.NET程序设计案例教程
张华
ASP.NET Core 3高级编程(第8版)
ASM全埋点开发实战
王灼洲 张伟
ASP.NET Core 3高级编程(第8版)
AS- Helix : 人工智能时代艺术与科学融合——第五届艺术与科学国际学术研讨会论文集
鲁晓波 主编;赵超 副主编
ASP.NET Core 3高级编程(第8版)
ASP.NET程序设计案例教程(第2版)
涂俊英
ASP.NET Core 3高级编程(第8版)
ASP.NET核心技术
叶昭晖 著;叶昭晖、陈修亮、郑龙、王伊、杨磊 编
ASP.NET Core 3高级编程(第8版)
ASP.NET网站设计教程(微课视频版)
陶永鹏;郭鹏;刘建鑫;张立杰
ASP.NET Core 3高级编程(第8版)
ASP.NET Web开发技术(微课版)
王颖;刘艳;王先水
您可能感兴趣 / 更多
ASP.NET Core 3高级编程(第8版)
最后一个人(《时代》杂志评其为“十大后世界末日小说”之一)
[英]玛丽·雪莱 著;新华先锋 出品
ASP.NET Core 3高级编程(第8版)
不能赢的辩护【当当定制“检方证物线索卡*5】金匕首奖得主史蒂夫·卡瓦纳推理神作
[英]史蒂夫·卡瓦纳 著;酷威文化 出品
ASP.NET Core 3高级编程(第8版)
谢林与现代欧洲哲学
[英]安德鲁·鲍伊
ASP.NET Core 3高级编程(第8版)
科普勒斯顿阿哲学史11
[英]弗雷德里克·科普勒斯顿 后浪
ASP.NET Core 3高级编程(第8版)
构建底层逻辑(用底层逻辑武装大脑,实现思维能力的跃升)
[英]艾萨克·瓦茨 译者;卢东民
ASP.NET Core 3高级编程(第8版)
哈利·波特 一段魔法史
[英]大英图书馆 编;向寻 冬翌 译
ASP.NET Core 3高级编程(第8版)
管教的常识:直面孩子成长的88个问题
[英]苏珊·伊莎克丝 译者;李江艳
ASP.NET Core 3高级编程(第8版)
卢梭与德国观念论:自由、依赖和必然
[英]大卫·詹姆斯(David James) 著;吴珊珊 译
ASP.NET Core 3高级编程(第8版)
点读版恐龙妙想国 动物妙想国系列全4册 3-6岁儿童趣味科普绘本爆笑动物认知启蒙图画书三角龙梁龙剑龙霸王龙恐龙科普故事幼儿园想象力绘本睡前故事书
[英]露丝·西蒙斯/著 (英)阿列克谢·彼特斯科夫/绘 邢培健 译
ASP.NET Core 3高级编程(第8版)
凤凰文库设计理论研究系列-杜威与设计:实用主义的设计视角研究
[英]布莱恩·S.迪克森 著;王成思 译;汪星宇
ASP.NET Core 3高级编程(第8版)
钢琴技巧实践
[英]默里·麦克拉克伦(Murray McLachlan) 著;孙晓雪 译
ASP.NET Core 3高级编程(第8版)
野蔷薇村的故事(全8册):40周年官方特别纪念版
[英]吉尔·巴克莲 著;[中]马爱农 译