2016-06-10 66 views
1

我有以下代碼,其中Model.VerticalType包含字符串。我想這與Enum比較,但我得到的錯誤:運算符'=='不能應用於字符串類型和枚舉的操作數

操作「==」不能應用於類型「字符串」的操作數和

DGS.DGSAPI.UI.BusinessModels.Enums.VerticalType.Voice

@if (Model.VerticalType == DGS.DGSAPI.UI.BusinessModels.Enums.VerticalType.Voice) 
{ 
    <img src="@phoneWSource" /> 
} 
+0

是否有一個原因,你的模型不能枚舉作爲一個字段? – Bauss

+1

@Bauss代碼由其他人編寫,我無權更改。所以我必須爲它找到一個解決方案。 –

回答

2

呼叫.ToString()上枚舉值。

@if (Model.VerticalType == DGS.DGSAPI.UI.BusinessModels.Enums.VerticalType.Voice.ToString()) 

這會將enum轉換爲它的名稱,在這種情況下爲Voice

0

嘗試Enum.Parse從字符串轉換爲枚舉值:

Enum.Parse(typeof(DGS.DGSAPI.UI.BusinessModels.Enums.VerticalType), Model.VerticalType, true) == DGS.DGSAPI.UI.BusinessModels.Enums.VerticalType.Voice 

true表示忽略的情況下,同時解析

+0

我實際上更喜歡'.ToString()'方法,因爲如果字符串不是有效的枚舉值,它只是進行字符串相等比較,並返回false而不是拋出異常。 – caesay

+0

@caesay它非常依賴於我的需求。有時,我需要字符串「EnumValue」,「enumValue」和「enumvalue」等於真正的EnumValue。另外,有一個方法'Enum.TryParse'來防止異常...所以,這取決於。 – Backs

+0

您可以輕鬆地進行不區分大小寫的字符串比較,所以您的「EnumValue」與「」enumValue「」示例並非真正有效 – caesay

相關問題