将enum作为字符串返回到asp.mvc和json中

时间:2015-08-26 20:17:25

标签: c# asp.net json enums

我有一个包含enum属性的类。

我的枚举:

 public enum ToasterType
    {
        [EnumMember(Value = "success")]
        success,
        [EnumMember(Value = "error")]
        error
    }

我的班级:

[Serializable]
    public class ToastrMessage
    {
        [JsonConverter(typeof(StringEnumConverter))]
        public ToasterType ToasterType { get; set; }
         // bla bla bla
    }

用Json返回类:

 public async Task<ActionResult> Authentication()
    {
         return Json(this.ToastrMessage(ToasterType.success));
    }

并输出:

enter image description here

为什么1

但我需要以下内容:

ToasterType: success

1 个答案:

答案 0 :(得分:3)

如果您只想使用StringEnumConverter进行当前操作,则可以在调用json()之前添加以下内容

//convert Enums to Strings (instead of Integer)
JsonConvert.DefaultSettings = (() =>
{
    var settings = new JsonSerializerSettings();
    settings.Converters.Add(new StringEnumConverter { CamelCaseText = true });
    return settings;
});

要全局应用此行为,只需在Global.asax或启动类中添加以下设置。

HttpConfiguration config = GlobalConfiguration.Configuration;
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add
            (new Newtonsoft.Json.Converters.StringEnumConverter());