在asp.mvc和json中以字符串形式返回枚举

tes*_*ack 5 c# asp.net enums json

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

我的枚举:

 public enum ToasterType
    {
        [EnumMember(Value = "success")]
        success,
        [EnumMember(Value = "error")]
        error
    }
Run Code Online (Sandbox Code Playgroud)

我的课 :

[Serializable]
    public class ToastrMessage
    {
        [JsonConverter(typeof(StringEnumConverter))]
        public ToasterType ToasterType { get; set; }
         // bla bla bla
    }
Run Code Online (Sandbox Code Playgroud)

通过Json返回课程:

 public async Task<ActionResult> Authentication()
    {
         return Json(this.ToastrMessage(ToasterType.success));
    }
Run Code Online (Sandbox Code Playgroud)

和输出:

在此处输入图片说明

为什么1呢?

但我需要以下内容:

ToasterType: success
Run Code Online (Sandbox Code Playgroud)

ven*_*mit 4

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

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

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

HttpConfiguration config = GlobalConfiguration.Configuration;
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add
            (new Newtonsoft.Json.Converters.StringEnumConverter());
Run Code Online (Sandbox Code Playgroud)