VB ASP.NET DisplayFor Enum无法使用DisplayFor帮助程序正确显示

时间:2015-10-02 13:01:13

标签: asp.net-mvc vb.net enums

在尝试让DisplayFor(枚举)显示Enum的DisplayName而不是Enum Text时,我遇到了一个问题,指出了我正确的方向:

MVC 5.1 Razor DisplayFor not working with Enum DisplayName

使用它我创建了一个帮助器来显示DisplayName。

型号:

Public Enum QnStatus
    <Display(Name:="Öppen")> Open
    <Display(Name:="Avslutad")> Closed
    <Display(Name:="Väntar på svar från kund")> WaitingOnCustomer
    <Display(Name:="Väntar på svar från leverantör")> WaitingOnSupplier
End Enum

助手:

@Model Enum
@If EnumHelper.IsValidForEnumHelper(ViewData.ModelMetadata) Then
Dim displayname As String = ""
For Each item As SelectListItem In EnumHelper.GetSelectList(ViewData.ModelMetadata, DirectCast(Model, [Enum]))
    If item.Selected Then
        If Not IsNothing(item.Text) Then
            displayname = item.Text
        Else
            displayname = item.Value

        End If
    End If
Next

If String.IsNullOrEmpty(displayname) Then
    If Model Is Nothing Then
        displayname = String.Empty
    Else
        displayname = Model.ToString()
    End If

End If

@Html.DisplayFor(Function(model) displayname)

Else
    @Html.DisplayTextFor(Function(model) model)
End If

我遇到的问题是,现在在视图中使用DisplayFor时会返回以下内容(WaitingOnCustomer的示例):

 WaitingOnCustomer Enum Väntar på svar från kund 

所以我得到Enum Text + Enum Type + DisplayName。

我没有使用帮手:

 WaitingOnCustomer

为什么在使用帮助程序时返回枚举文本和类型?

1 个答案:

答案 0 :(得分:0)

您的助手视图当前返回@Model + the literal text "Enum" + DisplayName的值。要解决此问题,请从帮助器视图中删除第一行@Model Enum,然后它将仅返回DisplayName