c# - ASP.NET Core 3.0 Razor Datatables Ajax 不显示 JSon 数据
问题描述
我有一个带有表格的页面,有一列,使用 DataTables;我使用 ajax 调用加载数据。
数据返回到页面但表格没有显示行。我在浏览器上没有任何错误显示。
这是我的带有 JQuery 的 HTML:
<div>
<table class="table table-bordered" id="DetailsTable" width="100%" cellspacing="0"</table>
</div>
<script>
jQuery(function () {
$('#DetailsTable').DataTable({
"responsive": true,
"processing": true,
"serverSide": true,
"ajax": {
"url": "/Index?handler=Table",
"type": "GET",
"dataSrc": "",
"dataType": "json"
},
"columnDefs": [
{ "targets": "detail_ID", visible: true }
],
"columns": [
{ "data": "detail_ID" }]
});
});
</script>
这是我的方法:
public async Task<IActionResult> OnGetTableAsync()
{
wItem = await _detailRepo.Finddetail(CancellationToken.None);
string NewtonJSON = JsonConvert.SerializeObject(wItem);
return Content(NewtonJSON);
}
这是重命名的 JSON:
{
"detail_ID": 7,
"detail_GUID": "685b8741-fe22-460a-bb76-7ecd9c320172"
}
有什么建议吗?
解决方案
首先,您不需要将结果转换为 json - web api 在 c# 中为您处理:
public async Task<IActionResult> OnGetTableAsync()
{
var wItem = await _detailRepo.Finddetail(CancellationToken.None);
//string NewtonJSON = JsonConvert.SerializeObject(wItem);
return Content(wItem );
}
我认为您可能希望将返回类型更改为 OK:
public async Task<IActionResult> OnGetTableAsync()
{
var wItem = await _detailRepo.Finddetail(CancellationToken.None);
return Ok(wItem );
}
并返回一个列表(以适合表格)
public async Task<IActionResult> OnGetTableAsync()
{
var wItem = await _detailRepo.Finddetail(CancellationToken.None);
return Ok(new List<object> {wItem} );
}
我相信这应该返回类似:
[{
"detail_ID": 7,
"detail_GUID": "685b8741-fe22-460a-bb76-7ecd9c320172"
}]
哪个应该与表格更兼容
您可能还必须更改 ajax 调用的“ajax”部分:
"ajax": {
"url": "/Index?handler=Table",
"type": "GET",
"dataType": "application/json"
}
更新:看起来您需要返回查看示例的特定对象Here
所以你需要让你的对象看起来像这样:
{
"data": [{
"detail_ID": 7,
"detail_GUID": "685b8741-fe22-460a-bb76-7ecd9c320172"
}]
}
最简单的方法可能是更新您的服务器端执行以下操作:
public async Task<IActionResult> OnGetTableAsync()
{
var wItem = await _detailRepo.Finddetail(CancellationToken.None);
return Ok(new { data = new List<object> {wItem} });
}
我相信有一个用于数据表的 .Net nuget 包,可以为您提供更合适的返回类型
希望这可以帮助
推荐阅读
- java - firebase 电话身份验证在发布版本中不起作用
- yii - Yii2注册Js set Type并移除jquery
- reactjs - 用打字稿反应上下文
- python - 在 Tensorboard 中组织运行
- ansible - Pervent Ansible 在变量中将 \a 更改为 \u0007
- sql - Postgres 间隔在 where 子查询中不起作用
- javascript - 所有可能的可打印字符
- android - ionic android 平台无法通过 http 与后端通信
- apache-beam - 在 Apache Beam 中结合 vs ParDo
- django - 在一个视图中创建具有 OneToOneField 关系的视图