我使用 ASP.NET MVC,我正在使用DataTable.net库
我通过以纯文本形式返回信息的 JsonResult 从数据库中获取数据。
方法
// GET: Cliente
public ActionResult Index()
{
List<Cliente> _cliente = clienteService.GetAll().ToList();
config = new MapperConfiguration(cfg => cfg.CreateMap<Cliente, ClienteViewModel>());
List<ClienteViewModel> list = config.CreateMapper().Map<List<ClienteViewModel>>(_cliente);
return Json(list, JsonRequestBehavior.AllowGet);
}
从 HTML
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$("#clientes").DataTable({
paging: true,
searching: true,
bProcessing: true,
"ajax": {
"url": "Cliente/Index",
"columns": [
{ "data": "ClienteId" },
{ "data": "RazonSocial" },
{ "data": "NumeroDocumento" },
{ "data": "Direccion" },
{ "data": "Fijo" },
{ "data": "Email" },
{ "data": "Estado" }
],
"dataType": "json"
},
"language": {
"sProcessing": "Procesando...",
"sLengthMenu": "Mostrar _MENU_ registros",
"sZeroRecords": "No se encontraron resultados",
"sEmptyTable": "Ningún dato disponible en esta tabla",
"sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
"sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros",
"sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
"sInfoPostFix": "",
"sSearch": "Buscar:",
"sUrl": "",
"sInfoThousands": ",",
"sLoadingRecords": "Cargando...",
"oPaginate": {
"sFirst": "Primero",
"sLast": "Último",
"sNext": "Siguiente",
"sPrevious": "Anterior"
},
"oAria": {
"sSortAscending": ": Activar para ordenar la columna de manera ascendente",
"sSortDescending": ": Activar para ordenar la columna de manera descendente"
}
}
});
});
我认为问题是将索引保留为 ActionResult 并创建一个加载表的 JsonResult 方法。
更新,因为我有我的方法。控制器
// GET: Cliente
public ActionResult Index()
{
return View();
}
public JsonResult ListaClientes()
{
List<Cliente> _cliente = clienteService.GetAll().ToList();
config = new MapperConfiguration(cfg => cfg.CreateMap<Cliente, ClienteViewModel>());
List<ClienteViewModel> list = config.CreateMapper().Map<List<ClienteViewModel>>(_cliente);
return Json(list, JsonRequestBehavior.AllowGet);
}
HTML
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$("#clientes").DataTable({
//paging: true,
//searching: true,
//bProcessing: true,
"ajax": {
"url": "@Url.Action("ListaClientes")",
"dataSrc": '',
"type": "GET",
"columns": [
{ "data": "ClienteId" },
{ "data": "RazonSocial" },
{ "data": "NumeroDocumento" },
{ "data": "Direccion" },
{ "data": "Fijo" },
{ "data": "Email" },
{ "data": "Estado" }
],
//"dataType": "json"
},
"language": {
"sProcessing": "Procesando...",
"sLengthMenu": "Mostrar _MENU_ registros",
"sZeroRecords": "No se encontraron resultados",
"sEmptyTable": "Ningún dato disponible en esta tabla",
"sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
"sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros",
"sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
"sInfoPostFix": "",
"sSearch": "Buscar:",
"sUrl": "",
"sInfoThousands": ",",
"sLoadingRecords": "Cargando...",
"oPaginate": {
"sFirst": "Primero",
"sLast": "Último",
"sNext": "Siguiente",
"sPrevious": "Anterior"
},
"oAria": {
"sSortAscending": ": Activar para ordenar la columna de manera ascendente",
"sSortDescending": ": Activar para ordenar la columna de manera descendente"
}
}
});
});
错误 DataTables 警告:表 id=customers - 为第 0 行第 0 列请求未知参数“0”。有关此错误的更多信息,请参阅
我的疑问与 JuankGlezz 的疑问相同,因为如果您的 Index 方法返回 Json,则您不能同时调用 Index 视图。但我要给你一个明确的例子来说明你的问题。
我们有 Index 方法,它调用包含显示客户端的 Table(DataTable) 的 Index 视图。
该视图具有以下内容:
如果仔细观察,脚本会在删除末尾默认调用的参数时更短,例如
busqueda
,paginación
和filtrado
. 有趣的部分是定义选项的地方,我用ASP 带来url
的 Helper来定义它。@Url.Action
默认情况下,这会传递给我们的控制器,因为这就是GET
为什么我创建一个返回带有客户端列表的 Json 的方法。这样:JsonRequestBehavior.AllowGet
它允许您使用 JSON 响应来获取类型请求,如果您不输入它,它会给您一个 500 错误。另一个重要部分是"dataSrc": ''
在您的脚本中声明以使用 Json 数组。这样可以完美运行,希望对您有所帮助