如何使用 abp.io 在 ui 中显示 ExtraProperties

How to Display the ExtraProperties in the ui using abp.io

我正在使用 abp.io 社区版 3.3.1 和 blazor 我正在尝试为用户 (identityuserdto) 添加新的 属性,我想将其显示在创建和编辑表单以及数据 table 中,为此我遵循了此文档 https://docs.abp.io/en/commercial/latest/guides/module-entity-extensions

因为找不到文档https://docs.abp.io/en/latest/Module-Entity-Extensions

这是我的情况枚举 Domain.Shared

namespace University.Situation
{
    public enum SituationType
    {
        Student = 1,
        AssistantProfessor,
        Professor
    }

}

和我的 ModuleExtensionConfigurator

        public static void Configure()
        {
            OneTimeRunner.Run(() =>
            {
                ObjectExtensionManager.Instance.Modules()
                  .ConfigureIdentity(identity =>
                  {
                      identity.ConfigureUser(user =>
                      {
                          user.AddOrUpdateProperty<SituationType>(
                              "Situation"
                          );
                      });
                  });
            }); 
            OneTimeRunner.Run(() =>
            {
                ConfigureExistingProperties();
                ConfigureExtraProperties();
            });

当我执行我的宿主项目时,我可以大摇大摆地看到我的额外属性,但是当我执行我的 blazor 项目时,我的字段不是 出现在创建和编辑表单以及数据中 table.

所以我怎么能手动添加它们,因为我猜只有商业版本可以自动添加额外的属性?

提前致谢。

如果您查看 this documentation and for example this 问题(来自我:-|),您会发现您需要从要覆盖的页面或组件继承。

一方面,您有数据库层和域层,它们需要额外的 属性/ 属性。您的问题显示了域层的代码。

对于 EF Core,您需要自定义在 *.EntityFrameworkCore 项目中找到的 *EfCoreEntityExtensionMappings.cs。

现在,对于应用程序和服务,您需要转到 *.Application.Contracts 项目并将代码添加到 *DtoExtensions.cs(class 包含描述如何执行的注释那个)。

最后创建一个新页面(*.Blazor 项目),这将是默认页面的自定义实现。

从默认页面复制所有内容。

之后确保您从默认页面继承。

现在根据您的需要编辑代码。

由于我在阅读文档时遇到困难,所以我想解释一下我是如何做到的。 如果您想自定义租户管理页面,流程为:

  1. 创建类似“MyTenantManagement.razor”的页面

  2. here中获取默认文件内容并粘贴到“MyTenantManagement.razor”

  3. 将@inherits 行替换为:

    @inherits Volo.Abp.TenantManagement.Blazor.Pages.TenantManagement.TenantManagement

  4. 删除@page 东西(这样路由器就不会混淆

  5. 添加可能遗漏的用法(我有,所以这可能是必需的步骤。

文件的上半部分可能如下所示:

Abp.DependencyInjection
@using Microsoft.AspNetCore.Authorization
@using Volo.Abp.FeatureManagement.Blazor.Components
@using Volo.Abp.TenantManagement.Localization
@using Volo.Abp.TenantManagement
@using TT2Masterz.Localization
@using Microsoft.Extensions.Localization

@inherits Volo.Abp.TenantManagement.Blazor.Pages.TenantManagement.TenantManagement

@attribute [Authorize(TenantManagementPermissions.Tenants.Default)]
@attribute [ExposeServices(typeof(Volo.Abp.TenantManagement.Blazor.Pages.TenantManagement.TenantManagement))]
@attribute [Dependency(ReplaceServices = true)]

@inject AbpBlazorMessageLocalizerHelper<AbpTenantManagementResource> LH
@inject IStringLocalizer<TT2MasterzResource> LT

<h2>This is my custom tenant managemant page</h2>

希望对您有所帮助:)