C# Jquery datatables服务器端不在控制器内调用操作

C# Jquery datatables服务器端不在控制器内调用操作,c#,ajax,datatables,asp.net-core-mvc,C#,Ajax,Datatables,Asp.net Core Mvc,我正在学习ASP.NET核心MVC项目。问题是datatables不调用服务器端操作方法 CrudController [HttpPost] public object GetStudents() { var test = student.GetAll(10, 0); //List<Student> the count result is 2 return new { draw = 2, recordsTotal = 2,

我正在学习ASP.NET核心MVC项目。问题是datatables不调用服务器端操作方法

CrudController

[HttpPost]

public object GetStudents()
{
    var test = student.GetAll(10, 0); //List<Student> the count result is 2
    return new {
        draw = 2,
        recordsTotal = 2,
        recordsFiltered = 2,
        data = test
    };
}

public IActionResult Index()
{
    return View();
}
$(文档)中数据表的脚本。就绪

$("#example").DataTable({
                "processing": true,
                "serverSide": true,
                "ajax": {
                    url: "@Url.Action("GetStudents", "Crud")",
                    type: "POST"
                },
                "columns": [
                        { "data": "id" },
                        { "data": "name" },
                        { "data": "birthdate" },
                        { "data": "active" }
                ]
        });

上述代码不会产生错误。但是没有调用
GetStudents()
方法(我放置了一个断点)。它们怎么了?

我觉得你的控制器定义有点不对劲

它应该返回json数据

 public class CrudController : Controller  
    {             
        public ActionResult Index()  
        {  
            return View();  
        }  
        public JsonResult GetStudents()  
        {  
            try  
            {  
                var result = <data list>
                return Json(result, JsonRequestBehavior.AllowGet);                    
            }  
            catch (Exception ex)  
            {  
                //Log ex.Message 
            }  
        }
    }  

还可以使用chrome/fiddler的网络选项卡来检查请求。

我觉得您的控制器定义有点错误

它应该返回json数据

 public class CrudController : Controller  
    {             
        public ActionResult Index()  
        {  
            return View();  
        }  
        public JsonResult GetStudents()  
        {  
            try  
            {  
                var result = <data list>
                return Json(result, JsonRequestBehavior.AllowGet);                    
            }  
            catch (Exception ex)  
            {  
                //Log ex.Message 
            }  
        }
    }  

还可以使用chrome/fiddler的网络选项卡来检查请求。

数据表不会调用方法
GetStudents
。另一方面,我使用
$.getJSON
成功地调用了它。问题不在于返回值,而在于为什么datatables无法调用此方法。您是否尝试了我所说的方法?您的控制器正在返回一个对象,该对象实际上应该返回一个JSON。datatables没有调用方法
GetStudents
。另一方面,我使用
$.getJSON
成功地调用了它。问题不在于返回值,而是为什么datatables无法调用此方法。您是否尝试了我所说的方法?您的控制器返回的对象实际上应该返回一个jsonurl:“/Crud/GetStudents”您是否按照@AsifRaza的建议更改了url?您可能需要指定完整的url,而不仅仅是controller&method.url:“/Crud/GetStudents”您是否按照@AsifRaza的建议更改了url?您可能需要指定完整的url,而不仅仅是控制器和方法。
$(document).ready(function() {  
    $('#example').DataTable({  
        "ajax": {  
            "url": "/Crud/GetStudents",  
            "dataSrc": ""  
        },  
        "columns": [{  
            "data": "some col"  
        }, {  
            "data": "some other col"  
        }, 
        .... ]  
    });  
});