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()
?