Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以数字形式返回的枚举值_C#_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

C# 以数字形式返回的枚举值

C# 以数字形式返回的枚举值,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,当我从javascript向控制器进行ajax调用时,字符串值会正确自动地转换为同名的枚举字段。 然而,反过来说,从控制器返回Json(),让枚举字段发送它的数值,而不是它的字符串表示形式 我怎样才能让字符串表示返回javascript而不侵入序列化程序呢。下面是我目前拥有的,我认为它会起作用,但事实并非如此。我仍然从ajax调用返回0或1 [DataContract] public enum Uom { [EnumMember(Value="CD")] CD = 0,

当我从javascript向控制器进行ajax调用时,字符串值会正确自动地转换为同名的枚举字段。
然而,反过来说,从控制器返回Json(),让枚举字段发送它的数值,而不是它的字符串表示形式

我怎样才能让字符串表示返回javascript而不侵入序列化程序呢。下面是我目前拥有的,我认为它会起作用,但事实并非如此。我仍然从ajax调用返回0或1

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

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

webapiconfig.cs

添加以下内容

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

这会将所有枚举更改为字符串。希望这能有所帮助。

2010年,人们接受了这个答案。4年是很长的一段时间,所以我想知道除了搞乱系列化器本身之外,这方面是否有什么变化,因为如果是这样的话,在我的情况下它甚至不值得。我只想把它转换成javascript本身,但如果它是某种注释或其他东西,那么它是值得的。我希望我是在开玩笑,但它仍然适用。默认情况下,
Json()
结果使用内置的.NET Json序列化程序,并且仍然将枚举序列化为字符串。如果需要的话,您可以切换到JSON.NET而不需要太多麻烦。好的,谢谢。我将在javascript端手动转换。