JsonResults返回Enum值而不是字符串表示
本文关键字:字符串 表示 返回 Enum JsonResults | 更新日期: 2023-09-27 18:15:59
在我的客户端,我有一个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;
}
}
});
在控制器中我有一个这样的方法:
[HttpPost]
public JsonResult ListResult(string Id, string SessionKey)
{
IBl biz = new BL();
var result = biz.GetResults(Id,SessionKey);
return Json(result);
}
问题是控制器返回的结果是一个具有Enum属性的对象(其字符串表示为值)。然而,当到达ajax调用中的success函数时,枚举不再是字符串表示,而是被转换为它们的int值。我怎样才能避免这种情况呢?并将字符串表示保留在javascript端。
而不是返回var result
创建一些结果实体类,你可以用StringEnumConverter标记enum属性。
class Result
{
[JsonConverter(typeof(StringEnumConverter))]
public EnumType EnumProperty { get; set; }
*****other properties goes here****
}
正如Stephen所建议的,如果使用Json.NET
作为序列化器,则可以使用
试试这样:
var result = biz.GetResults(Id,SessionKey);
var modifiedResult = new
{
...,
r.EnumValue.ToString(),
...
};
return Json(modifiedResult);