2016-06-10 4 views
1

Model.VerticalType에 문자열이 포함 된 다음 코드가 있습니다. 나는 Enum과 비교 싶지만 오류 얻을 : 열거에연산자 '=='을 string 및 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()) 

이 경우 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

문자열이 유효한 enum 값이 아닌 경우 문자열 비교 연산자를 수행하고 예외를 throw하는 대신 false를 반환하므로 실제로는 .ToString() 메서드가 더 마음에 들었습니다. – caesay

+0

@caesay 아주 많이 생각합니다. 때로는 문자열이 필요합니다. "EnumValue", "enumValue"및 ""enumvalue "는 실제 EnumValue와 같습니다. 덧붙여 예외를 막기위한 Enum.TryParse 메소드가 있습니다. – Backs

+0

대소 문자를 구별하지 않는 문자열 비교를 쉽게 할 수 있으므로''EnumValue ''vs' "enumValue"'예제는 실제로 유효하지 않습니다 – caesay

관련 문제