如何在 Cofoundry 的显示页面上重用 SelectList 编辑器

How to reuse SelectList editor on display pages in Cofoundry

出于各种原因,我想在 Cofoundry 中展示数据模型的可编辑版本。我的数据模型有一个枚举字段,在管理界面中,我可以通过添加 SelectList 属性使其显示为 select 列表:

[Display(Name = "Tenant type")]
[SelectList(typeof(TenantTypeType))]
public TenantTypeType TenantType { get; set; }

现在我正在为数据模型实现显示页面,在这里我稍微作弊并简单地将数据模型包含在显示模型中:

public class BookingDisplayModel : ICustomEntityPageDisplayModel<BookingDataModel>
{
  public string PageTitle { get; set; }
  public string MetaDescription { get; set; }

  public BookingDataModel Booking { get; set; }
}

现在我想要 HTML 中 TenantType 的编辑器:

<div class="row">
  <div class="col">
    @Html.LabelFor(m => m.CustomEntity.Model.Booking.TenantType, new { @class = "form-label" })
    @Html.EditorFor(m => m.CustomEntity.Model.Booking.TenantType, new { htmlAttributes = new { @class = "form-control" } })
  </div>
</div>

不幸的是 ASP.NET Core 没有内置的 select 枚举列表……但 Cofoundry 显然有。

问题:我应该添加什么 razor 代码来以与 Cofoundry 管理界面相同的方式生成编辑器元素?我实际上只想编辑单个 entity/data 模型,就像在 Cofoundry 管理界面中一样 - 但我想在“正常”页面中将其展示给非管理员。

在 Cofoundry 中,UI 元素专为管理面板设计。从 v0.9 开始,它们是用 AngularJS 专门为管理面板编写的,并且在未来的某个时候可能会使用更现代的框架进行重写。

一般来说,Cofoundry 以一种不显眼的方式集成到您的应用程序中,因此它不会为您的 website/application 指定特定的框架、样式或布局 - 这取决于您的实现,因此在此如果您需要构建自己的 select 列表。