为 abp-dynamic-form 中的下拉列表扩展实体和配置外键的推荐方法

Posted

技术标签:

【中文标题】为 abp-dynamic-form 中的下拉列表扩展实体和配置外键的推荐方法【英文标题】:Recommended way to extend entities and configure foreign keys for dropdowns in abp-dynamic-form 【发布时间】:2021-06-23 10:13:57 【问题描述】:

我正在尝试学习 abp 模块开发。我有一个问题,我几天都无法解决。是否有一种聪明的方法来填充外键值以填充 abp 模块模板中 abp-dynamic-form 的下拉列表。

我不明白的一点是,在 abp 模块模板中,dtos 位于 .contracts 项目中。但是contracts项目不依赖.domain项目。 Contracts 项目仅对 .domain.shared 项目具有依赖关系。并且 domain.shared 没有项目依赖。所以,例如我有 CityDto 作为:

public class CityDto : EntityDto<Guid>

    public string Name  get; set; 

    public Guid CountryId  get; set; 

    public Country Country  get; set; 


public class Country: : AggregateRoot<Guid>

    public string Name  get; set; 

CityDto 应包含国家/地区信息。但是.contracts 项目的国家是未知的。因为 Country 是在 .domain 项目中定义的。请有人给出一个代码示例,说明如何实现这一点。我想构建一个允许在下拉列表中选择国家/地区值的 abp-dynamic-form,例如在 db 中创建 City 行时。提前致谢。

【问题讨论】:

【参考方案1】:

您的 dto 包含实体。 dto 的要点之一是,暴露实体的选择性属性而不是整个实体。

因此,您的 CityDto 应该包含 CountryDto 以及您决定在 Country 实体而不是实体本身中公开的属性。

public class CityDto : EntityDto<Guid>

    public string Name  get; set; 

    public Guid CountryId  get; set; 

    public Country Country  get; set;  //This should also be CountryDto

Abp 分层架构阻止您在 dtos 中使用具有项目依赖项的实体。

【讨论】:

以上是关于为 abp-dynamic-form 中的下拉列表扩展实体和配置外键的推荐方法的主要内容,如果未能解决你的问题,请参考以下文章

使用javascript为下拉列表赋值

Power Apps中的级联下拉列表

将枚举转换为核心 2.1 剃须刀页面中的下拉列表

为机器人自动化中的下拉列表选择元素

当某个值返回为空时,如何使用下拉列表中的选定值?

如何将数据库中的特定值显示为第一个下拉列表选择选项