【问题标题】:VB ASP.NET DisplayFor Enum not displaying correctly using DisplayFor helperVB ASP.NET DisplayFor Enum 使用 DisplayFor 帮助程序无法正确显示
【发布时间】:2015-10-02 13:01:13
【问题描述】:

在尝试让 DisplayFor(enum) 显示 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。

不使用我得到的助手:

等待客户

为什么在使用 helper 时会返回 Enum Text 和 Type?

【问题讨论】:

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


    【解决方案1】:

    您的帮助视图当前正在返回 @Model + the literal text "Enum" + DisplayName 的值。要修复它,请从帮助视图中删除第一行 @Model Enum,然后它将仅返回 DisplayName

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 2019-03-01
      相关资源
      最近更新 更多