C# Jquery Datatable在asp.net内核中使用异步任务方法获取数据

C# Jquery Datatable在asp.net内核中使用异步任务方法获取数据,c#,jquery,asp.net-core,datatables,C#,Jquery,Asp.net Core,Datatables,我想在asp.net内核中获取数据并显示在jquery datatable中。 我得到的错误方法未找到(404),但我的方法已在控制器中。我已经检查了其他解决方案,但找不到解决方案 我的代码如下: Jquery代码: $(document).ready(function() { $("#kt_table_1").DataTable({ "oLanguage": { "sZeroRecords": "No records to display", },

我想在asp.net内核中获取数据并显示在jquery datatable中。 我得到的错误方法未找到(404),但我的方法已在控制器中。我已经检查了其他解决方案,但找不到解决方案

我的代码如下:

Jquery代码:

$(document).ready(function() {
    $("#kt_table_1").DataTable({
    "oLanguage": {
        "sZeroRecords": "No records to display",
    },
    "bProcessing": true,
    "bServerSide": true,
    "searching": false,
    "bDestroy": true,
    "bAutoWidth": false,
    "lengthMenu": [[10, 20, 30], [10, 20, 30]],
    "sAjaxSource": "@Url.Action("GetUsersList","UserProfile")",
    "fnServerParams": function (aoData) {
        aoData.push({ "name": "searchdata", "value": "" });
        perm = aoData;
    },
    "fnServerData": function (sSource, aoData, fnCallback, oSettings) {
        oSettings.jqXHR = $.ajax({
            "dataType": 'json',
            "type": "POST",
            "url": sSource,
            "data": aoData,
            "success": fnCallback,
            "timeOut": 10000
        });
    },
    "sPaginationType": "full_numbers",
    "bDeferRender": true,
    "aoColumns":
    [
        {
            "className": 'details-control',
            "orderable": false,
            "data": null,
            "defaultContent": ''
        },
        { "sName": "UserId", "bSearchable": false, "bSortable": false, "width": "25px" },
        { "sName": "UserName", "bSearchable": true, "bSortable": true },
        { "sName": "UserEmail", "bSearchable": true, "bSortable": true },
        { "sName": "UserMobileNo", "bSearchable": true, "bSortable": true },
        { "sName": "UserStatus", "bSearchable": true, "bSortable": true },
       // { "sName": "Action", "bSearchable": false, "bSortable": false, "className": "icn" }
    ],
    "sAjaxSource": "@Url.Action("GetUsersList","UserProfile")",
    "order": [[2, "desc"]]
    });
});
来自datatable的控制器方法调用:

   private async Task<IActionResult> GetUsersList(string sEcho, int iDisplayStart, int iDisplayLength, int iSortCol_0, string sSortDir_0, string sColumns, string searchdata)
    {
        JQueryDataTableParamModel parm = new JQueryDataTableParamModel();
        parm.sEcho = sEcho;
        parm.iDisplayStart = iDisplayStart;
        parm.iDisplayLength = iDisplayLength;
        parm.sSortDir_0 = sSortDir_0;
        var sColumnsArray = sColumns.Split(',');
        string sortColumn = "";
        if (sColumnsArray.Length > 0 && sColumnsArray.Length >= iSortCol_0)
            sortColumn = Convert.ToString(sColumnsArray[iSortCol_0]);
        try
        {
            IEnumerable<string[]> Adminusers = Enumerable.Empty<string[]>();
            if (!String.IsNullOrEmpty(parm.sSearch))
            {
                parm.sSearch = parm.sSearch.Replace("'", "''");
            }
            ApiClient apiClient = new ApiClient(apiUrl);
            var requestUrl = apiClient.CreateRequestUri(string.Format(System.Globalization.CultureInfo.InvariantCulture,"UsersApi/GetUsersList"));
            List<UserProfile> obj= await Client.GetAsync<List<UserProfile>>(requestUrl);
            List<UserProfile> lstusersModel = new List<UserProfile>();
            foreach (var item in obj)
            {
                UserProfile objusersModel = new UserProfile();
                objusersModel.UserId = item.UserId;
                objusersModel.UserName = item.UserName.ToString();
                objusersModel.UserEmail = item.UserEmail.ToString();
                objusersModel.UserMobileNo = item.UserMobileNo.ToString();
                objusersModel.UserStatus = item.UserStatus;
                lstusersModel.Add(objusersModel);
            }
            Adminusers = from c in lstusersModel
                         select new string[] {
                                    c.UserId.ToString(),
                                    "<input type='checkbox' name='checkexportId' id='"+ c.UserId +"' Class='checkexportclass' />",
                                    c.UserName.ToString(),
                                    c.UserEmail.ToString(),
                                    c.UserMobileNo.ToString(),
                                    c.UserStatus.ToString(),

            };
            int noOfRecoreds = 10;
            return Json(new
            {
                sEcho = parm.sEcho,
                iTotalRecords = obj.Count,
                iTotalDisplayRecords = noOfRecoreds,
                aaData = Adminusers
            });
        }
        catch
        {
            throw;
        }
    }
private async Task GetUsersList(字符串sEcho、int iDisplayStart、int idisplayslength、int iSortCol_0、字符串sSortDir_0、字符串sColumns、字符串searchdata)
{
JQueryDataTableParamModel parm=新的JQueryDataTableParamModel();
parm.sEcho=sEcho;
parm.iDisplayStart=iDisplayStart;
parm.iDisplayLength=iDisplayLength;
parm.sSortDir_0=sSortDir_0;
var sColumnsArray=sColumns.Split(',');
字符串sortColumn=“”;
if(sColumnsArray.Length>0&&sColumnsArray.Length>=iSortCol\u 0)
sortColumn=Convert.ToString(sColumnsArray[iSortCol_0]);
尝试
{
IEnumerable Adminusers=Enumerable.Empty();
如果(!String.IsNullOrEmpty(parm.sSearch))
{
parm.sSearch=parm.sSearch.Replace(“,”);
}
ApiClient ApiClient=新ApiClient(apiUrl);
var requestUrl=apiClient.CreateRequestUri(string.Format(System.Globalization.CultureInfo.InvariantCulture,“UsersApi/GetUsersList”);
List obj=await Client.GetAsync(requestUrl);
List lstusersModel=新列表();
foreach(obj中的var项目)
{
UserProfile objusersModel=新的UserProfile();
objusersModel.UserId=item.UserId;
objusersModel.UserName=item.UserName.ToString();
objusersModel.UserEmail=item.UserEmail.ToString();
objusersModel.UserMobileNo=item.UserMobileNo.ToString();
objusersModel.UserStatus=item.UserStatus;
lstusersModel.Add(objusersModel);
}
Adminusers=来自lstusersModel中的c
选择新字符串[]{
c、 UserId.ToString(),
"",
c、 UserName.ToString(),
c、 UserEmail.ToString(),
c、 UserMobileNo.ToString(),
c、 UserStatus.ToString(),
};
int noOfRecoreds=10;
返回Json(新的
{
塞科=帕尔姆·塞科,
iTotalRecords=对象计数,
iTotalDisplayRecords=noOfRecoreds,
aaData=Adminusers
});
}
抓住
{
投掷;
}
}
请检查以上代码。如果我在从jQueryDataTable调用异步任务方法时有任何错误或其他方式,请建议我

我们将非常感谢你的帮助。
提前谢谢你

您的控制器方法是私有的,如果您想从控制器类外部访问它,您需要将其公开。

否,它给出错误:找不到方法(404)您的操作方法是私有的H。。。谢谢这是我的错!谢谢。