枚举值返回为数字 [重复]
Posted
技术标签:
【中文标题】枚举值返回为数字 [重复]【英文标题】: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 端手动转换。
【参考方案1】:
在webapiconfig.cs
添加以下内容
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add
(new Newtonsoft.Json.Converters.StringEnumConverter());
这会将所有枚举更改为字符串。希望这会有所帮助。
【讨论】:
以上是关于枚举值返回为数字 [重复]的主要内容,如果未能解决你的问题,请参考以下文章