【问题标题】:Enum values returned as numeric [duplicate]枚举值返回为数字 [重复]
【发布时间】:2014-09-08 13:21:19
【问题描述】:

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

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

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

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

【问题讨论】:

  • 接受的答案是在 2010 年。4 年是一段很长的时间,所以我想知道除了弄乱序列化器本身之外是否有任何改变,因为如果是这样的话,它甚至不值得我的情况。然后我将其转换为 javascript 本身,但如果它是一些注释或任何使这项工作的东西,那么它是值得的。
  • 我希望我是在开玩笑,但它仍然适用。 Json() 结果默认使用内置的 .NET JSON 序列化程序,它仍在将枚举序列化为字符串。如果您愿意,可以毫不费力地切换到 JSON.NET。
  • 无赖。好,谢谢。我将在 javascript 端手动转换。

标签: c# asp.net-mvc asp.net-web-api


【解决方案1】:

webapiconfig.cs

添加以下内容

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2019-09-26
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多