如何理解 Multitenancy 是否启用?

How to understand Multitenancy is enabled or not in view?

我们没有使用多租户。当它被禁用时,大部分与租户相关的 UI 都会被隐藏,但在 LinkedAccount 页面中,用户可以查看租户名称(默认)。我们想将它隐藏在 UI 中。试图找到 IsMultiTenancyEnabled 之类的 属性,但找不到(实际上它在 IMultiTenancyConfig 中,但对 razor 页面不可用)。那么,如果未启用多租户,如何隐藏 UI 元素?

//This is the code we want to hide. 
<div class="form-group">
        <label>@L("TenancyName")</label>
        <input type="text" name="TenancyName" class="form-control" value="@(ViewBag.TenancyName ?? "")" maxlength="@TurkKizilayi.RFL.MultiTenancy.Tenant.MaxTenancyNameLength">
</div>

还有一件事:如果我们隐藏这段代码会怎样?我们应该更改模型还是应用程序服务(是)?

Angular 项目中已有服务 AbpMultiTenancyServiceAppComponentBase 已经有 multiTenancy 的定义。因此,如果您的组件 class 是从 AppComponentBase 继承的,那么您可以直接使用此服务。

您可以在 *.ts 文件中定义一个 属性,如下所示。

isMultiTenancyEnabled: boolean = this.multiTenancy.isEnabled

然后您可以在 HTML 中使用相同的内容,如下所示。

*ngIf="isMultiTenancyEnabled"

或者您可以简单地使用以下代码。

abp.multiTenancy.isEnabled

对于 MVC,您可以将 IMultiTenancyConfig 注入到您的视图中。 这是你想要的最终代码;

@inject IMultiTenancyConfig MultiTenancyConfig
@using Abp.Configuration.Startup
@using MyCompanyName.AbpZeroTemplate.Web.Areas.AppAreaName.Models.Common.Modals
@Html.Partial("~/Areas/AppAreaName/Views/Common/Modals/_ModalHeader.cshtml", new ModalHeaderViewModel(L("LinkNewAccount")))

<div class="modal-body">
    <form name="LinkAccountModalForm" role="form" novalidate class="form-validation">

        @if (MultiTenancyConfig.IsEnabled)
        {
            <div class="form-group">
                <label>@L("TenancyName")</label>
                <input type="text" name="TenancyName" class="form-control" value="@(ViewBag.TenancyName ?? "")" maxlength="@MyCompanyName.AbpZeroTemplate.MultiTenancy.Tenant.MaxTenancyNameLength">
            </div>
        }

        <div class="form-group">
            <label>@L("UserName")</label>
            <input class="form-control" type="text" name="UsernameOrEmailAddress" required maxlength="@MyCompanyName.AbpZeroTemplate.Authorization.Users.User.MaxEmailAddressLength">
        </div>

        <div class="form-group">
            <label>@L("Password")</label>
            <input type="password" name="Password" autocomplete="off" class="form-control" required maxlength="@MyCompanyName.AbpZeroTemplate.Authorization.Users.User.MaxPasswordLength">
        </div>
    </form>

</div>

@Html.Partial("~/Areas/AppAreaName/Views/Common/Modals/_ModalFooterWithSaveAndCancel.cshtml")