JsonResults返回Enum值而不是String表示

Ben*_*min 4 c# ajax asp.net-mvc enums

在我的客户端,我有一个像下面这样的ajax调用:

          $.ajax({
                url: "Controller/ListResult",
                type: 'POST',
                contentType: "application/json;charset=utf-8",
                data: JSON.stringify({
                    Id: ObjectId,
                    SessionKey: sessionManager.getSessionKey()
                }),
                dataType: "json",
                success: function (result) {
                var test = results;
                    }
                }
            });
Run Code Online (Sandbox Code Playgroud)

在Controller中我有一个像这样的方法:

      [HttpPost]
       public JsonResult ListResult(string Id, string SessionKey)
       {
        IBl biz = new BL();
        var result = biz.GetResults(Id,SessionKey);
        return Json(result);
       }
Run Code Online (Sandbox Code Playgroud)

问题是,其结果是控制器返回是具有少数对象枚举的属性(与他们的字符串表示的值).但是当它在ajax调用中到达success 函数时,枚举不再是字符串表示,而是以某种方式将它们转换为它们的int值.我怎么能避免这个?并保持字符串表示在JavaScript方面.

Nav*_*dar 7

而不是返回var result创建一些结果实体类,您可以使用StringEnumConverter在那里标记枚举属性.

class Result
{
  [JsonConverter(typeof(StringEnumConverter))]
  public EnumType EnumProperty { get; set; }

  *****other properties goes here****
}
Run Code Online (Sandbox Code Playgroud)

正如斯蒂芬所说,如果将其Json.NET用作序列化器,则可以正常工作.