【发布时间】:2020-10-18 14:06:50
【问题描述】:
我有一个 Razor 页面,并在该页面上显示 JavaScript 数据表中的数据。我试图将枚举值显示为字符串,但我的枚举值没有得到正确的字符串表示形式。
Startup.cs
services.AddRazorPages().AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
});
枚举.cs
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum Operation
{
[EnumMember(Value = "None")]
None,
[EnumMember(Value = "Send e-mail")]
SendEmail,
[EnumMember(Value = "Download file")]
DownloadFile
}
Result.cs
public class Result
{
public int Id { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
[Column(TypeName = "smallint")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public Operation Operation { get; set; }
public bool Success { get; set; }
}
结果页
public IActionResult OnPost()
{
var resultData = _dbContext.Results.ToList();
var jsonData = new {recordsTotal = resultData.Count(), data = resultData
};
return new JsonResult(jsonData);
}
结果视图 这里只是 JS 数据表的脚本
<script>
$(document).ready(function () {
$('#resultDatatable').dataTable({
"processing": true,
"serverSide": true,
"filter": true,
"ajax": {
url: "/Result",
type: 'POST',
headers: { 'RequestVerificationToken': $('@Html.AntiForgeryToken()').val() }
},
"columns": [
{ "data": "id", "name": "Id", "autoWidth": true, "visible": false},
{
"data": "startDate", "name": "Start date", "autoWidth": true, "render": function (d) {
return moment(d).format("YYYY/MM/DD");}
},
{
"data": "endDate", "name": "End date", "autoWidth": true, "render": function(d) {
return moment(d).format("YYYY/MM/DD");}
},
{ "data": "operation", "name": "Operation", "autoWidth": true },
{ "data": "success", "name": "Success", "autoWidth": true }
]
});
});
</script>
当我调用它时,我会从 EnumMember 值中得到正确的枚举表示:
var test = JsonConvert.SerializeObject(resultData); //SendEmail -> "Send e-mail"
但是,当我:
return new JsonResult(resultData); //SendEmail -> "SendEMail"
我尝试了这个解决方案ASP.NET MVC Core API Serialize Enums to String,但没有得到预期的结果。
【问题讨论】:
标签: c# asp.net-core enums datatables razor-pages