我正在尝试将数据表参数发送到服务器,但是过去在.NET Framework中工作的东西似乎在.NET Core中不工作。似乎只有在映射主DTParameters
对象内的对象时,我才能得到Length
,Draw
,Start
的值。
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);
}
Search
的param
属性始终为空。
所以我将方法从GET
更改为POST
,并且有效。现在,我已获得所需的所有值。
咦...
请参考jQuery DataTables Asp.Net Core Server Side Demo。希望这会有所帮助