C# 在DisplayFor helper中将枚举中的下划线替换为空格

C# 在DisplayFor helper中将枚举中的下划线替换为空格,c#,asp.net-mvc,razor,enums,C#,Asp.net Mvc,Razor,Enums,我的枚举类型为: public enum OType { First_enum_option, Second_enum_option, None_of_the_above } “我的模型”具有此类型的枚举字段类型,该类型在视图中显示为: @Html.DisplayFor(x => x.EType) 在视图中,该选项将正确显示。但我想用空格替换下划线。对于普通字符串,我通常使用Replace(““,”) 如果我使用:@Htm

我的枚举类型为:

public enum OType
    {
        First_enum_option,
        Second_enum_option,
        None_of_the_above
    }
“我的模型”具有此类型的枚举字段类型,该类型在视图中显示为:

@Html.DisplayFor(x => x.EType)
在视图中,该选项将正确显示。但我想用空格替换下划线。对于普通字符串,我通常使用
Replace(““,”)

如果我使用:
@Html.DisplayFor(x=>x.EType.ToString().Replace(““,”)
,我将获得此System.InvalidOperationException,并显示以下消息:

模板只能用于字段访问、属性访问、单维度>数组索引或单参数自定义索引器表达式

我想到了这个解决方案:

<td>
    @{ 
         string str = item.EType.ToString().Replace("_", " ");
     }

    @str
</td>

@{ 
string str=item.EType.ToString().Replace(““,”);
}
@str
这就解决了问题。有什么简洁优雅的方法可以做到这一点吗?

将枚举更改为:

public enum OType
    {
        [Display(Name = "First enum option")]
        First_enum_option,

        [Display(Name = "Second enum option")]
        Second_enum_option,

        [Display(Name = "None of the above")]
        None_of_the_above
    }
使用,

@Model.EType.GetDisplayValue()
在您看来。

使用:

@Html.DisplayFor(x => x.EType).ToString().Replace("_", " ")

为每个值添加一个
[Display]
属性,然后使用视图use
@Model.EType.GetDisplayValue()
中描述的扩展方法。如果从资源文件获取显示名称,则可能会更好地复制该属性,然后在必要时可以对其进行本地化。什么是
GetDisplayValue()