【问题标题】:How to Display the ExtraProperties in the ui using abp.io如何使用 abp.io 在 ui 中显示 ExtraProperties
【发布时间】:2020-11-06 02:04:14
【问题描述】:

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

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

这是我的情况枚举 域.共享

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 项目时,我的领域不是 出现在创建和编辑表单以及数据表中。

我猜只有商业版可以自动添加额外属性,我该如何手动添加它们?

提前谢谢你。

【问题讨论】:

  • 我刚刚尝试了一个使用 razor ui 的基本 abp 项目,它可以工作,我认为这个问题只在 blazor 项目上,我们可以认为这是一个问题吗?

标签: blazor abp


【解决方案1】:

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

一方面,您拥有需要附加属性的数据库层和域层。您的问题显示了域层的代码。

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

现在对于应用程序和服务,您需要转到 *.Application.Contracts 项目并将代码添加到 *DtoExtensions.cs(该类包含描述如何执行此操作的 cmets)。

最后,您创建一个新页面(*.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>

希望对你有帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2016-09-11
    相关资源
    最近更新 更多