FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 3146|回复: 2
打印 上一主题 下一主题

Abp + FineUICore 学生CRUD 示例

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-15 15:16:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 棕榈 于 2020-2-15 15:14 编辑

Abp + FineUICore 学生CRUD 示例





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的最大特点,模块划分的很细,你可以根据自己的需要引入不同的模块。


这是项目的整个结构




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



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


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


这个Pages的目录结构





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


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




我们在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提供的基础功能通过个项目体现出来。


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







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
发表于 2020-2-15 15:31:56 | 只看该作者
赞赞赞!
向千千万万战斗在一线的无私奉献者学习和致敬!
国难当头,行动为先,
福佑中华,祖国加油!
也祝您一切平安吉祥!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-22 02:22 , Processed in 0.045673 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表