2014-07-17 3 views
3

자바 스크립트에서 컨트롤러로 아약스를 호출하면 문자열 값이 올바르게 자동 변환되어 같은 이름의 열거 형 필드로 전달됩니다.
그러나 다른 방법으로 컨트롤러에서 Json()을 반환하면 열거 형 필드에 문자열 표현 대신 숫자 값이 전송됩니다.열거 형 값이 숫자로 반환되었습니다.

어떻게하면 자바 스크립트로 돌아가려면 문자열 표현을 얻을 수있는 모든 serializer를 침공하지 않고. 아래는 내가 현재 가지고있는 것이고 나는 그것이 효과가있을 것이라고 생각했지만 그렇지 않습니다. 아약스 호출에서 0 또는 1이 반환됩니다. webapiconfig.cs

에서

[DataContract] 
public enum Uom 
{ 
    [EnumMember(Value="CD")] 
    CD = 0, 

    [EnumMember(Value="SD")] 
    SD 
} 
+0

그 대답은 2010 년이었습니다. 4 년은 오래 되었기 때문에 나는 이것에 변화가 있는지 궁금 해서요. 나는 javascript 자체에서 변환 할 것입니다.하지만이 주석을 작성하거나이 작업을 수행하는 것이면 가치가 있습니다. – user441521

+1

농담을하고 싶지만 여전히 적용됩니다. 'Json()'결과는 기본적으로 내장 된 .NET JSON seralizer를 사용하며 여전히 문자열에 대한 enum을 직렬화합니다. 원한다면 너무 많은 문제없이 JSON.NET으로 전환 할 수 있습니다. –

+0

Bummer. 알았어 고마워. 나는 자바 스크립트 측면에서 수동으로 변환 할 것이다. – user441521

답변

1

은 추가

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add 
       (new Newtonsoft.Json.Converters.StringEnumConverter()); 

이 문자열에 모든 열거 변경됩니다 다음과 같습니다. 이것이 도움이되기를 바랍니다.