在尝试让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
为什么在使用帮助程序时返回枚举文本和类型?
答案 0 :(得分:0)
您的助手视图当前返回@Model + the literal text "Enum" + DisplayName
的值。要解决此问题,请从帮助器视图中删除第一行@Model Enum
,然后它将仅返回DisplayName
。