如何在控制器(MVC Core 2.2)中映射DataTable参数?

问题描述 投票:0回答:2

我正在尝试将数据表参数发送到服务器,但是过去在.NET Framework中工作的东西似乎在.NET Core中不工作。似乎只有在映射主DTParameters对象内的对象时,我才能得到LengthDrawStart的值。

DTParameters类:

public class DTResult<T>
{
    public int draw { get; set; }

    public int recordsTotal { get; set; }

    public int recordsFiltered { get; set; }

    public IEnumerable<T> data { get; set; }
}

public abstract class DTRow
{
    public virtual string DT_RowId
    {
        get { return null; }
    }

    public virtual string DT_RowClass
    {
        get { return null; }
    }

    public virtual object DT_RowData
    {
        get { return null; }
    }
}

public class DTParameters
{
    public int Draw { get; set; }    

    public DTColumn[] Columns { get; set; }

    public DTOrder[] Order { get; set; }

    public int Start { get; set; }

    public int Length { get; set; }

    public DTSearch Search { get; set; }

    public string SortOrder
    {
        get
        {
            return Columns != null && Order != null && Order.Length > 0
                ? (Columns[Order[0].Column].Data + (Order[0].Dir == DTOrderDir.DESC ? " " + Order[0].Dir : string.Empty))
                : null;
        }
    }

    public int SearchOption { get; set; }

}

public class DTColumn
{
    public string Data { get; set; }

    public string Name { get; set; }

    public bool Searchable { get; set; }

    public bool Orderable { get; set; }

    public DTSearch Search { get; set; }
}

public class DTOrder
{
    public int Column { get; set; }

    public DTOrderDir Dir { get; set; }
}

public enum DTOrderDir
{
    ASC,
    DESC
}

public class DTSearch
{
    public string Value { get; set; }

    public bool Regex { get; set; }
}

ajax调用:

ajax: {
    "type": "GET",
    "url": '@Url.Action("GetCompanies", "Company")',                     
    "data": function (data) {
        return data;
     }

我一直使用function (data) { return data = JSON.stringify(data); },但是我必须在这里删除stringify以便至少将一些值发送到服务器。

Startup.cs中:

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2).AddJsonOptions(options =>
            {
   options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
}); 

最后是CompanyController

public object GetCompanies(DTParameters param)
{    
    return _companyService.GetCompaniesForDatatable(param, CurrentClient);
}

Searchparam属性始终为空。

c# .net asp.net-core datatable asp.net-core-2.2
2个回答
0
投票

所以我将方法从GET更改为POST,并且有效。现在,我已获得所需的所有值。

咦...


0
投票

请参考jQuery DataTables Asp.Net Core Server Side Demo。希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.