C# 以数字形式返回的枚举值
当我从javascript向控制器进行ajax调用时,字符串值会正确自动地转换为同名的枚举字段。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,
然而,反过来说,从控制器返回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端手动转换。