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方面.
而不是返回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
用作序列化器,则可以正常工作.