2016-06-10 239 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

相关问题