FineUI 官方论坛

标题: Abp + FineUICore 学生CRUD 示例 [打印本页]

作者: 棕榈    时间: 2020-2-15 15:16
标题: Abp + FineUICore 学生CRUD 示例
本帖最后由 棕榈 于 2020-2-15 15:14 编辑

Abp + FineUICore 学生CRUD 示例


[attach]12220[/attach]


Abp是一个Web开发的基础架构,类似于Java的Spring,这个是Abp的官网 https://abp.io/ ,不了解Abp的可以查看它的官方文档。


下面我将介绍如何将FineUICore添加到Abp的中,Abp为 2.0.1,FineUICore为 6.1.2,虽然FineUICore还没有发布支持.netcore3.1的版本,但现在做一个演示示例还是可以用的。


我是从Abp官网生成的示例DEMO,你也可以通过Abp提供的CLI来生成示例。


Abp提供的模板是含有UI的,我们需要将它提供的UI去掉,它的UI都是通过模块(Module)引入的,这也是新版Abp的最大特点,模块划分的很细,你可以根据自己的需要引入不同的模块。


这是项目的整个结构


[attach]12221[/attach]

Abp对开发环境是有要求的
Visual Studio 2019 (v16.3+)
.NET Core 3.1



如果要采用Abp提供的UI,还需要NodeJS的支持


运行项目:
1、先将 StudentCrudProject.DbMigrator 设为启动项目,运行项目,它会创建数据库及创建初始数据
2、再将
StudentCrudProject.Web 设为启动项目,运行就可以看到效果了


这个Pages的目录结构


[attach]12222[/attach]


要注意的是 StudentCrudProjectPageModel 这个类,它是继承 AbpPageModel,AbpPageModel含有在开发时常用到的一些属性。


Abp 是 DDD模式的一种实现,里面有很多DDD的一些思想,通过示例项目中的结构也能够看的出来。
业务逻辑代码都是放在领域层里,而应用层主要负责权限、数据验证等操作,下面是示例中添加的类:


[attach]12223[/attach]

我们在FineUI中直接引用的是应用层的代码,操作如下:


  1. namespace StudentCrudProject.Web.Pages
  2. {
  3.     public class StudentModel : WinPageModel
  4.     {
  5.         private readonly IStudentAppService _studentAppService;

  6.         public StudentModel(IStudentAppService studentAppService)
  7.         {
  8.             _studentAppService = studentAppService;
  9.         }

  10.         [BindProperty]
  11.         public GetStudentForEditOutput Student { get; set; }

  12.         public async Task OnGet(int? id, int? schoolId)
  13.         {
  14.             Student = await _studentAppService.GetStudentForEditAsync(new GetStudentForEditInput() { Id = id });
  15.             if (schoolId.HasValue)
  16.             {
  17.                 Student.School = schoolId.Value;
  18.             }
  19.         }

  20.         public async Task<IActionResult> OnPostOk()
  21.         {
  22.             var input = ObjectMapper.Map<GetStudentForEditOutput, CreateOrUpdateStudentInput>(Student);
  23.             await _studentAppService.CreateOrUpdateStudentAsync(input);

  24.             WinOk();
  25.             return UIHelper.Result();
  26.         }

  27.         public IActionResult OnPostCancel()
  28.         {
  29.             WinCancel();
  30.             return UIHelper.Result();
  31.         }
  32.     }
  33. }
复制代码


是不是很简洁,业务逻辑及相关操作都在领域层及应用层实现了,这里只需要进行相应的调用即可。

事后,我会通过 Abp + FineUICore 创建一个全新的 AppBox 项目,将Abp提供的基础功能通过个项目体现出来。


本文中的示例项目文件请到知识星球下载。








作者: erp8@live.cn    时间: 2020-2-15 15:31
赞赞赞!
向千千万万战斗在一线的无私奉献者学习和致敬!
国难当头,行动为先,
福佑中华,祖国加油!
也祝您一切平安吉祥!
作者: sanshi    时间: 2020-2-16 00:27
行动派!




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4