项目

表单模块(专业版)

需持有 ABP Team 或更高级别许可 方可使用此模块。

本模块可用于创建信息收集问卷。表单模块能够实时存储提交的回复数据,并支持将数据导出为CSV格式文件。您可通过专属链接分享表单,支持要求身份验证或允许匿名提交。其功能类似于Google表单应用,适用场景广泛:可制作满意度调查、管理活动报名、收集新闻稿邮箱地址、创建知识测验,甚至接收订单请求。

查看模块功能概览页了解详细特性。

安装指南

表单模块未预装系统,需手动安装。提供两种安装方式:

  • 通过ABP CLI:在解决方案文件夹(含*.sln文件的目录)中打开命令行窗口,输入以下命令:

    abp add-module Volo.Forms
    
  • 通过ABP Suite:启动ABP Suite并选择项目,通过顶部菜单进入模块页面。找到Forms功能卡,点击"作为项目添加"(含源代码)或"作为包添加"(不含源代码)。

程序包

本模块遵循模块开发最佳实践指南,由多个NuGet与NPM包构成。若需了解包结构及关联关系,请参阅该指南。

可访问表单模块程序包列表页查看相关包清单。

用户界面

菜单项

SaaS模块在根主菜单中新增以下条目:

  • 表单:创建新表单、管理表单问题、删除表单

菜单项名称常量定义于FormsMenus类中。

页面

表单管理

表单页面用于管理所有表单。可通过操作菜单查看表单内容、分享表单或删除表单。

表单列表页

查看表单模块完整功能,请访问模块描述页

数据种子

运行.DbMigrator应用时,本模块会向数据库注入示例初始表单(参见数据种子系统):

  • 表单标题:"测试表单"
  • 表单描述:"测试描述"

内部结构

领域层

聚合根

遵循实体最佳实践与规范

  • 表单(Form)
    • 表单实体的主聚合根,存储表单配置项、标题与描述
  • 问题基类(QuestionBase)
    • 存储表单问题,通过FormId与表单实体建立依赖关系
  • 表单回复(FormResponse)
    • 每次表单提交生成新回复记录,包含答案记录集

仓储层

遵循仓储最佳实践与规范,定义以下自定义仓储:

  • IFormRepository
  • IQuestionRepository
  • IChoiceRepository
  • IResponseRepository

领域服务

遵循领域服务最佳实践与规范

问题管理器(QuestionManager)

用于管理表单问题集合。

应用层

应用服务

  • FormApplicationService

  • QuestionAppService

  • ResponseAppService

数据库支持

通用配置

表/集合前缀与模式

默认所有表/集合使用Frm前缀。可通过修改FormsDbProperties类的静态属性调整表前缀或模式名(取决于数据库提供商支持)。

连接字符串

模块使用Forms作为连接字符串名称。若未定义该名称的连接字符串,将回退至Default连接字符串。详见连接字符串文档

Entity Framework Core / MongoDB

表/集合
  • FrmForms:表单列表

  • FrmQuestions:表单问题

  • FrmAnswers:表单回复答案

  • FrmChoices:问题选项

  • FrmFormResponses:用户每次提交表单时生成的回复记录

实体关系

实体关系图

权限管理

模块定义的所有权限详见FormsPermissions类成员。

Angular UI

表单模块暂不支持Angular用户界面。

Blazor UI

表单模块暂不支持Blazor用户界面。

Blazor-Server UI

表单模块支持Blazor-Server。该版本使用Razor页面,与MVC版本功能基本一致。

分布式事件

本模块未定义额外分布式事件,请参考标准分布式事件

在本文档中