在我的客户端,我有一个如下所示的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端。
答案 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);