【发布时间】: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