gpt4 book ai didi

c# - 在 WebGrid 中获取枚举 DisplayName

转载 作者:太空狗 更新时间:2023-10-30 01:36:22 25 4
gpt4 key购买 nike

我有一个在一列中显示状态枚举的 WebGrid。有几个由两个单词组成的枚举成员,我想使用枚举的 DisplayName 属性而不是默认的 ToString() 表示,例如“OnHold”应显示为“On Hold”。

@grid.GetHtml(
tableStyle: "webGrid",
headerStyle: "header",
alternatingRowStyle: "alt",
mode: WebGridPagerModes.All,
columns: grid.Columns(
grid.Column("JobId", "Job ID"),
grid.Column("Status", "Status", item =>
{
return ModelMetadata
.FromLambdaExpression(**What goes in here**)
.DisplayName;
}),
grid.Column("OutageType", "Outage Type"),

有什么方法可以使用模型元数据获取此信息?

最佳答案

我们遇到了同样的问题。我最终通过制作以下 HtmlHelper 扩展来解决它:

    public static MvcHtmlString DisplayName(this HtmlHelper html, object value)
{
var displayAttributes = (DisplayAttribute[])value.GetType().GetField(value.ToString()).GetCustomAttributes(typeof(DisplayAttribute), false);
if (displayAttributes == null || displayAttributes.Length == 0)
{
return new MvcHtmlString(value.ToString());
}
return new MvcHtmlString(displayAttributes[0].Name);
}

然后可以像这样制作该列:

    grid.Column("Status", "Status", item => Html.DisplayName(item.Status)),

编辑:为了全局化,将“displayAttributes[0].Name”更改为“displayAttributes[0].GetName()”。

关于c# - 在 WebGrid 中获取枚举 DisplayName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22395340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com