Html.DropDownListFor 按布尔值分组 - 显示字符串而不是布尔值

Html.DropDownListFor grouping by bool - show string instead of bool value

我正在使用 Html.DropDownListFor() 显示包含列表数据的下拉菜单。列表项有一个名为 IsPublic 的布尔值 属性,定义此项是否为 public。

这是我定义下拉菜单的方式:

@Html.DropDownListFor(m => m.SelectedLayout,
                    new SelectList(Model.Layout, "LayoutString", "LayoutName", "IsPublic", 1))

如您所见,我按 属性 IsPublic 分组。正如预期的那样,分组是按以下方式完成的,组的命名如下:

注意分组是如何通过布尔值(truefalse)完成的。

有没有办法让我将此分组显示为自定义字符串,但仍按布尔值分组?因此,如果 IsPublic == true 将分组名称显示为 Public,反之亦然 IsPublic == false 将分组名称显示为 Private?

您可以在 class 中简单地使用 get only 属性,并将其用于分组。

public string DisplayPublic {
    get { return IsPublic ? "Public" : "Private"; }
}