编辑模板
ABP Suite 使用模板来生成代码文件。您可以点击“编辑模板”菜单项查看模板文件。
包含两个模板过滤器:
- UI框架:可在
Angular、MVC和Blazor模板之间切换。 - 数据库提供程序:可在
EF Core和MongoDb模板之间切换。
这些过滤器会根据您的ABP解决方案自动选择。所选解决方案显示在页面右上角,当前截图中为“Acme.BookStore”。
ABP Suite模板是嵌入资源,存储在 Volo.Abp.Commercial.SuiteTemplates 包中。当您更新项目时,Suite模板也会同步更新。为了确保为项目生成正确的代码,Volo.Abp.Commercial.SuiteTemplates 的版本必须与您的Suite版本保持一致。
如何找到需要编辑的模板?
模板页面设有搜索框。要找到相关模板,可以从生成的代码文件中选取一段独特文本进行搜索,系统将按模板内容进行筛选过滤。
模板文件遵循特定的命名约定:
- 若模板名称以
Server开头,则用于生成后端代码,如仓储、应用服务、本地化文件、控制器、权限、映射配置、单元测试等。 - 若模板名称以
Frontend.Angular开头,则用于Angular代码生成。Angular代码通过 Angular Schematics 生成。 - 若模板名称以
Frontend.Mvc开头,则用于生成Razor页面、菜单、JavaScript和CSS文件。 - 若模板名称以
Frontend.Blazor开头,则用于生成Razor组件。
如何编辑模板?
点击模板卡片上的 编辑 按钮后,您将看到模板内容及其变量。这些变量以 %%my-variable%% 格式编写。
编辑模板后,相应模板卡片上会显示“已自定义”标记。点击“还原自定义”即可恢复为原始内容。
变量:
编辑模板内容时,您可能需要参考变量列表。这些变量根据以下项目信息生成:
- 解决方案名称:Acme.BookStore
- 实体类型:主实体
- 实体名称:OrderLine
- 复数名称:OrderLines
- 数据库表:OrderLines
- 命名空间:OrderLines
- 基类:FullAuditedAggregateRoot
- 主键类型:Guid
- 页面标题:MyOrderLines
- 菜单图标:fa fa-shopping
| 变量名 | 值 |
|---|---|
| %%solution-namespace%% | Acme.BookStore |
| %%solution-namespace-camelcase%% | acme.bookStore |
| %%project-name%% | Acme.BookStore |
| %%only-project-name%% | BookStore |
| %%only-project-name-camelcase%% | bookStore |
| %%entity-namespace%% | OrderLines |
| %%entity-namespace-camelcase%% | orderLines |
| %%entity-name%% | OrderLine |
| %%entity-name-computed%% | OrderLine (或 OrderLineWithNavigationProperties - 如果包含导航属性) |
| %%entity-name-camelcase%% | orderLine |
| %%entity-name-plural%% | OrderLines |
| %%entity-name-plural-kebabcase%% | order-lines |
| %%entity-name-plural-camelcase%% | orderLines |
| %%entity-page-title%% | MyOrderLines (页面标题由ABP Suite本地化) |
| %%menu-icon%% | fa-shopping |
| %%primary-key%% | Guid |
| %%database-table-name%% | OrderLines |
| %%base-class%% | FullAuditedAggregateRoot |
| %%other-interfaces%% | , IMultiTenant (如果是多租户) |
| %%default-sorting%% | {0}Price asc |
| %%with-navigation-properties%% | WithNavigationProperties (如果包含导航属性) |
| %%entity-name-prefix%% | OrderLine. (如果包含导航属性) |
| %%entity-name-prefix-camelcase%% | orderLine. (如果包含导航属性) |
| %%entity-name-prefix-nullable%% | orderLine?. (如果包含导航属性) |
| %%module-name-slash-postfix%% | BookStore/ (用于模块模板) |
| %%custom-code-base%% | Base (如果启用了自定义代码支持) |
| %%custom-code-abstract-modifier%% | abstract (如果启用了自定义代码支持) |
| %%custom-code-partial-modifier%% | partial (如果启用了自定义代码支持) |
主/从实体关系的变量:
如果您建立了主/从实体关系,模板中会使用一些变量来生成代码。例如,以 Order 作为主实体,OrderLine 作为其子实体时,以下变量将填充为对应值:
| 变量名 | 值 |
|---|---|
| %%child-master-entity-name%% | Order |
| %%child-entities-namespaces%% | (Order主实体所有子实体的命名空间 - 逐行排列) |
| %%child-entities-namespaces-razor%% | (Order主实体所有子实体的命名空间 - 逐行排列 - 用于Blazor UI) |
| %%child-entities-appservice-injections%% | (将子实体应用服务注入到Razor页面 - 例如 @inject IOrderLineAppService OrderLineAppService) |
| %%mapper-ignore-child-entities%% | (为主实体的子实体添加映射忽略语句 - 例如 .Ignore(x => x.OrderLines)) |
条件语句:
条件语句用于在满足条件时渲染相关代码块。如果条件为真,则条件块内部的文本会被渲染。您也可以在条件块中使用变量。
| 变量名 | 描述 |
|---|---|
| %%<if:IMultiTenantEntity>%% %%</if:IMultiTenantEntity>%% | 如果实体是多租户实体。 |
| %%<if:ApplicationContractsNotExists>%% %%</if:ApplicationContractsNotExists>%% | 如果 *.Application.Contracts 项目不存在 |
| %%<if:IsNonTieredArchitecture>%% %%</if:IsNonTieredArchitecture>%% | 如果是非分层架构的应用模板。即 *.HttpApi.Host 项目不存在 |
| %%<if:IsTieredArchitecture>%% %%</if:IsTieredArchitecture>%% | 如果是分层架构的应用模板。即 *.HttpApi.Host 项目存在 |
| %%<if:IsModule>%% %%</if:IsModule>%% | 如果是模块模板。 |
| %%<if:IHasConcurrencyStamp>%% %%</if:IHasConcurrencyStamp>%% | 如果实现了 IHasConcurrencyStamp 接口或启用了并发检查 |
| %%<if:PreserveCustomCodeNotEnabled>%% %%</if:PreserveCustomCodeNotEnabled>%% | 如果未启用自定义代码支持。 |
| %%<if:IsChildEntity>%% %%</if:IsChildEntity>%% | 如果是子实体。 |
| %%<if:IsMasterWithChildEntities>%% %%</if:IsMasterWithChildEntities>%% | 如果是包含子实体的主实体。 |
| %%<if:HasNavigationProperties>%% %%</if:HasNavigationProperties>%% | 如果实体包含导航属性。 |
| %%<if:HasMasterEntityNavigationProperties>%% %%</if:HasMasterEntityNavigationProperties>%% | 如果是主实体且包含导航属性。 |
| %%<if:HasFilterableProperties>%% %%</if:HasFilterableProperties>%% | 如果实体包含任何可筛选属性。 |
| %%<if:HasAnyFilterableProperties>%% %%</if:HasAnyFilterableProperties>%% | 如果实体包含任何可筛选属性(包括导航属性)。 |
| %%<if:BulkDeleteEnabled>%% %%</if:BulkDeleteEnabled>%% | 如果启用了批量删除。 |
抠丁客




