【发布时间】:2017-03-16 13:25:12
【问题描述】:
在我的客户端,我有一个如下所示的 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 function 时,枚举不再是字符串表示,而是已转换为它们的 int 价值观。我怎样才能避免这种情况?并将字符串表示形式保留在 javascript 端。
【问题讨论】:
-
什么是
sessionManager.getSessionKey()? -
@StephenMuecke,它是检索会话的内部函数,但这不会影响任何事情。因为它按预期工作。
-
您需要创建一个匿名对象来表示您的数据并在枚举属性上使用
ToString()(JavascriptSerializer将枚举序列化为它们的数值而不是它们的字符串表示) -
嗨本杰明,你能试试这个吗 return Json(result.ToList(), JsonRequestBehavior.AllowGet);
-
您还可以在您的属性中使用 Json.NET 和
[JsonConverter(typeof(StringEnumConverter))]属性
标签: c# ajax asp.net-mvc enums