我正在使用 Asp MVC 3 应用程序。
我有一个枚举:
public enum EmployeesOptions
{
John = 1,
Peter = 2,
Andrew = 3
}
还有一个 MyViewModel
类
public class MyViewModel
{
public MyViewModel()
{
Employees = new List<EmployeesOptions>()
{
EmployeesOptions.John,
EmployeesOptions.Peter,
EmployeesOptions.Andrew
};
}
public IEnumerable<EmployeesOptions> Employees { get; set; }
}
我的 Controller :
public ActionResult Index()
{
var vm = new MyViewModel();
return View(vm);
}
在我的索引 View 中:
@model MyViewModel
<script type="text/javascript">
var jsonString = '@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(this.Model))';
var data = ko.mapping.fromJSON(jsonString);
omega.franchiseInfo = ko.mapping.fromJS(data);
</script>
来自服务器的序列化数据如下所示:
Emplyees:[1,2,3]
我想成为这样的人:
Emplyees:["John","Peter","Andrew"]
我错过了什么?
更新:
var jsonString = '@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(this.Model, Newtonsoft.Json.Formatting.None, new Newtonsoft.Json.Converters.StringEnumConverter()))';
这样就可以了!
最佳答案
如果您希望此枚举类型始终与其字符串值一起序列化,则可以使用 JsonConverter
属性和 StringEnumConverter
对其进行修饰像这样的类:
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
[JsonConverter(typeof(StringEnumConverter))]
public enum EmployeesOptions
{
John = 1,
Peter = 2,
Andrew = 3
}
然后您不再需要在序列化器选项中指定任何转换器类。
关于javascript - 将 enum 序列化为 const JsonNet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13071788/