JsonResults返回Enum值而不是String表示

时间:2016-11-03 03:29:22

标签: 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;
                    }
                }
            });

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

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

问题是控制器返回的结果,是具有枚举属性的对象(其字符串表示为值)。但是,当它在ajax调用中达到成功 函数时,枚举不再是字符串表示,而是已经转换为 int 价值观。我怎么能避免这个?并保持字符串表示在javascript端。

2 个答案:

答案 0 :(得分:7)

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

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

  *****other properties goes here****
}

正如斯蒂芬所说,如果使用Json.NET作为序列化程序,这是有效的。

答案 1 :(得分:3)

尝试这样的事情:

    var result = biz.GetResults(Id,SessionKey);
    var modifiedResult = new
      {
        ...,
        r.EnumValue.ToString(),
        ...
      };
    return Json(modifiedResult);