使用DisplayFor帮助器中的空格替换枚举中的下划线

时间:2016-03-15 03:54:03

标签: c# asp.net-mvc razor enums

我有一个enum OType:

public enum OType
    {
        First_enum_option,
        Second_enum_option,
        None_of_the_above
    }

我的模型有一个这种类型的枚举字段EType,它在视图中显示为:

@Html.DisplayFor(x => x.EType)

在视图中,选项显示正确。但我想用空格替换下划线。对于普通字符串,我通常使用Replace("_", " ")

执行此操作

如果我使用:@Html.DisplayFor(x => x.EType.ToString().Replace("_", " ")),我会收到带有消息的System.InvalidOperationException:

  

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

我想到了这个解决方案:

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

    @str
</td>

这解决了这个问题。是否有任何简洁而优雅的方法来实现这一目标?

2 个答案:

答案 0 :(得分:1)

将您的枚举更改为:

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

在你看来。

答案 1 :(得分:0)

使用:

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