如何理解 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 项目中已有服务 AbpMultiTenancyService
。 AppComponentBase
已经有 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")
我们没有使用多租户。当它被禁用时,大部分与租户相关的 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 项目中已有服务 AbpMultiTenancyService
。 AppComponentBase
已经有 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")